함수
1 2 3 4 5 6 7 8 9 10 11
| package main import "fmt"
func main() { first := "hello world!" message(first) }
func message(msg string) { fmt.Println(msg) }
|
가변인자도 지원, 슬라이스로 넘어 온다.
1 2 3 4 5 6 7 8 9 10 11 12
| package main import "fmt"
func main() { manyParamter("go", "C++", "javascript", "python") }
func manyParamter(_param ...string) { for _, item := range _param { fmt.Println(item) } }
|
리턴 시에도 자료형을 명시해야 함.
1 2 3 4 5 6 7 8 9 10
| package main import "fmt"
func main() { fmt.Println(returnMessage("hi golang?")) }
func returnMessage(msg string) string { return msg }
|
다중 리턴도 지원함.
1 2 3 4 5 6 7 8 9 10
| package main import "fmt"
func main() { fmt.Println(returnMessages("golang", "node.js", "JAVA")) }
func returnMessages(msg ...string) (string, string, int) { return msg[0], msg[1], 20190209 }
|
go는 포인터가 잇으니 파라미터에 주소값을 넣을 수 잇음.
1 2 3 4 5 6 7 8 9 10 11 12 13
| package main import "fmt"
func main() { a := "왼손은 거들뿐.." pointerMessage(&a) fmt.Println(a) }
func pointerMessage(msg *string) { fmt.Println(*msg) *msg = "오른손은 ?" }
|
익명함수 작성법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package main import "fmt"
func main() {
af := func(param string) string { return param }
fmt.Println(af("hello world")) }
|
패키지
go에선 모듈을 패키지라 부르는 거 같음.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package timepackage
import ( "strconv" "time" )
var myTime map[string]string
func init() { myTime = make(map[string]string) thisTime := time.Now() myTime["now"] = thisTime.String() myTime["yyyy-mm-dd"] = thisTime.Format("2006-01-02") myTime["yyyy-mm-dd HH:MM:SS"] = thisTime.Format("2006-01-02 15:04:05")
myTime["unixTimeStamp"] = strconv.FormatInt(thisTime.Unix(), 10) myTime["unixTimeStampNS"] = strconv.FormatInt(thisTime.UnixNano(), 10) }
func GetMyTime() map[string]string { return myTime }
|
패키지에서 함수를 만들 때 대문자로 시작하면 퍼블릭, 소문자면 프라이빗
작성한 패키지를 불러오려면 다음처럼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import ( "fmt" "mypackage/timepackage" )
func main() { res := timepackage.GetMyTime()
fmt.Println(res)
}
|
오늘은 요까지.