꿈꾸는 개발자 박상호입니다.
Devhoyas
꿈꾸는 개발자 박상호입니다.
전체 방문자
오늘
어제
  • ALL (17)
    • Algorithm (7)
    • Java (2)
    • Go (2)
    • Spring (3)
    • Database (1)
      • MySQL (1)
      • ElasticSearch (0)
    • Http (1)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
꿈꾸는 개발자 박상호입니다.

Devhoyas

[Go] Go를이용한 Stack 구현
Go

[Go] Go를이용한 Stack 구현

2022. 7. 12. 00:51

이번에 GoLang을 배우면서 문법 공부 복습 및 GoLang에서의 Stack은 어떻게 구현될까 궁금해 직접 구현해봤다.

package main

import (
	"errors"
	"fmt"
	"log"
)

type stack struct {
	top *node
}

type node struct {
	val  int
	next *node
}

func newStack() *stack {
	return &stack{
		top: nil,
	}
}

//LIFO Last In First Out

func (s *stack) push(val int) {

	if s.top == nil {
		n := &node{val: val, next: nil}
		s.top = n
		return
	}

	n := &node{val: val, next: s.top}
	s.top = n
}

func (s stack) peek() int {
	return s.top.val
}

func (s *stack) pop() (int, error) {
	if s.isEmpty() {
		return 0, errors.New("stack is empty")
	}

	t := s.top
	s.top = s.top.next
	return t.val, nil
}

func (s stack) isEmpty() bool {
	return s.top == nil
}

func main() {
	s := newStack()

	s.push(1)
	s.push(3)
	s.push(4)
	s.push(5)

	for !s.isEmpty() {
		v, err := s.pop()
		checkStackErr(err)
		fmt.Println("pop :", v)
	}

}

func checkStackErr(err error) {
	if err != nil {
		log.Fatalln(err)
	}
}

실행결과

GoLang은 지금껏 다뤄봤던 언어들 중에서 배우는데에 재미가 있고 똑똑하다는 느낌을 많이 받는다!..

저작자표시 비영리 변경금지 (새창열림)

'Go' 카테고리의 다른 글

[Go] context 호출 계층에 따른 결과 테스트하기  (0) 2022.07.18
    'Go' 카테고리의 다른 글
    • [Go] context 호출 계층에 따른 결과 테스트하기
    꿈꾸는 개발자 박상호입니다.
    꿈꾸는 개발자 박상호입니다.
    취미를 특기로, 특기를 꿈으로, 꿈을 직업으로!

    티스토리툴바