Good things to know when you develop software with Golang - yunkon-kim/test-on-github-actions GitHub Wiki

Good things to know when you develop software with Golang

Golang으둜 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν• λ•Œ μ•Œμ•„λ‘λ©΄ 쒋은 λ‚΄μš© μž…λ‹ˆλ‹€.

Package naming

According to the The Go Blog - Package names](https://blog.golang.org/package-names#TOC_2.),

Good package names are short and clear. They are lower case, with no under_scores or mixedCaps. They are often simple nouns, such as:

  • time (provides functionality for measuring and displaying time)
  • list (implements a doubly linked list)
  • http (provides HTTP client and server implementations)

μƒμ„±μž ν•¨μˆ˜ κ΅¬ν˜„

Golang은 Classκ°€ μ—†κ³ , ꡬ쑰체(struct)내에 ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, λ³„λ„μ˜ λ°©λ²•μœΌλ‘œ μƒμ„±μž(Constructor)λ₯Ό λ§Œλ“œλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. μ΄λŠ” C++κ°€ λ‚˜μ˜€κΈ° μ „, Cμ—μ„œ ꡬ쑰체와 ν•¨μˆ˜λ₯Ό κ°€μ§€κ³  μ‚¬μš©ν•˜λ˜ 방식과 μœ μ‚¬ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

본래 μƒμ„±μžλŠ” μΈμŠ€ν„΄μŠ€μ˜ 초기 μž‘μ—…μ„ λ‹΄λ‹Ήν•©λ‹ˆλ‹€. λ³€μˆ˜ μ΄ˆκΈ°ν™” 뿐만 μ•„λ‹ˆλΌ, λ©”λͺ¨λ¦¬ ν• λ‹Ή, μ—°κ²° 확인 λ“± μΈμŠ€ν„΄μŠ€κ°€ μ˜¨μ „νžˆ ν™œμš©λ˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ”°λΌμ„œ, 인터넷 μƒμ˜ ꡬ쑰체 생성 및 λ³€μˆ˜ μ΄ˆκΈ°ν™” λ§Œμ„ μˆ˜ν–‰ν•˜λŠ” 방법은 μ œμ™Έν•˜μ˜€κ³ , μ•„λž˜μ™€ 같은 예λ₯Ό 톡해 Golang μƒμ„±μž λ§Œλ“œλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

package main

import "fmt"

type Speaker struct {
	textOfSpeech string
}

func (s Speaker) GiveATalk(){
	fmt.Println(s.textOfSpeech)
}

func (s *Speaker) writeTextOfSpeech(){
	s.textOfSpeech = "Hello, I'm Alvin. ~~~~~"
}

//μƒμ„±μž ν•¨μˆ˜ μ •μ˜
func NewSpeaker() *Speaker {
	s := &Speaker{}
	s.writeTextOfSpeech()
	return s //포인터 전달
}

func main() {
	s := NewSpeaker() // μƒμ„±μž 호좜
	s.GiveATalk()
}
  • Speakerλ₯Ό μƒμ„±ν•˜λ©΄ 연섀문을 μ“΄ 후에 연섀을 ν•  μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
  • 그런데 Golang λ¬Έλ²•μœΌλ‘œλŠ” 이λ₯Ό μˆ˜ν–‰ν•˜κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ— (μœ μ‚¬) μƒμ„±μž ν•¨μˆ˜, NewSpeaker()λ₯Ό μ •μ˜ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • main κ΅¬λ¬Έμ—μ„œ NewSpeaker() ν˜ΈμΆœν•˜μ—¬ Speaker μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λ©΄, λ‚΄λΆ€μ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ SpeakerμΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³ , 연섀문을 μž‘μ„±ν•œν›„ 리턴(포인터)ν•©λ‹ˆλ‹€.
  • 이상 Golangν‘œ (μœ μ‚¬) μƒμ„±μž ν•¨μˆ˜ λ§Œλ“œλŠ” λ²•μ΄μ—ˆμŠ΅λ‹ˆλ‹€ πŸ˜„