Go 설치 및 설정, 주석, 출력, 변수 써보기
2019-01-27 13:01:03

설정

설치

공식 사이트에서 .dmg 받아서 설치하면 끝.

GCC가 필요하다는데 MAC 기준 Xcode땜에 그런지 따로 뭐 설치할 필욘 업엇음.

workspace 설정

1
2
3
4
5
go-workspace
└───bin
└───pkg
└───src
│ │─── ...

원하는 경로에 workspace 폴더를 만들고 위와 같은 구조로 폴더 생성을 한다

실제 프로젝트에서 사용할 폴더는 src이다.

환경변수

1
go env

env

  • GOROOT = Go가 설치된 디렉토리 + /pkg로 (Go 설치 시 자동) 여기에 표준 패키지가 있다.
  • GOPATH = 3rd party나 사용자 정의 패키지는 여기에서 찾는다.

내가 해야할 건 GOPATH라는 부분을 사용할 workspace로 바꿔줘야 함.

1
2
3
4
5
vi ~/.bash_profile
export GOPATH=/Volumes/Seagate\ Slim\ Drive/project/golang # 본인이 정한 workspace
export PATH=$GOPATH/bin:$PATH
source ~/.bash_profile
go env

그럼 GOPATH가 본인의 workspace로 바뀌엇을 것.

main 함수 작성

하나의 프로젝트엔 메인 패키지와 메인 함수가 팔수다. main.go

1
2
3
4
5
package main

func main() {

}

주석

1
2
3
4
5
6
7
8
9
10
11
package main

func main() {
// 한줄 주석

/*
111111
222222
333333
*/
}

출력문

1
2
3
4
5
6
7
8
9
package main

import "fmt" // fmt라는 표준 패키지 import

func main() {
fmt.Println("hi! golang :)") // JS: console.log("hi! golang :)");
fmt.Println("hi!", "golang", ":)") // JS: console.log("hi", "golang :)")
fmt.Printf("hi! %s\n", "golang :)") // JS: console.log("hi", "golang :)")
}

변수

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main

import (
"fmt"
"reflect"
"strconv"
)

func main() {

/*
변수 선언
기본으로 변수만 선언하면 자료형에 따라 default 값 생김 숫자형은 0, 문자형은 "" bool은 false
자료형 붙이는건 필수 아님.
*/

/*
기본 알아둬야 할 자료형만 적어둔다.
int: 32bit 시스템에선 int32, 64bit 시스템에선 int64로 자동 설정
int32: ~2,147,483,648 ~ 2,147,483,647,
int64: ~9,233,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float32: 32bit
float64: 64bit
bool: 참, 거짓
string: 문자열
*/

var i int

var f float64

var tf bool

var str = "foo" // JS: var str = 'foo'

str2 := "bar" // 함수 내에서만 축약 가능.

var bigInt int64 = 923372036854775899

const cs = "상수" // JS: const cs = "상수"

fmt.Println("i:", i, "f:", f, "tf:", tf, "str:", str, "str2:", str2, "cs:", cs, "bigInt:", bigInt)

// i: 0 f: 0 tf: false str: foo str2: bar cs: 상수 bigInt: 923372036854775899

/*
JS에서 ``로 출력하는 거 GO에서 하는 법.
const name = "delryn";
const age = 32;
const message `${name} is ${age} years old`;
console.log(message);

포멧 서식자
%s: 문자열
%d: 정수
*/

name := "delryn"
age := 32
message := fmt.Sprintf("%s is %d years old", name, age)

fmt.Println(message) // delryn is 32 years old

/*
Go 타입 체크하는 법 reflect package를 import를 해야 됨.
*/

fmt.Println("i:", reflect.TypeOf(i), "f:", reflect.TypeOf(f), "tf:", reflect.TypeOf(tf),
"str:", reflect.TypeOf(str), "str2:", reflect.TypeOf(str2), "cs:", reflect.TypeOf(cs), "bigInt:", reflect.TypeOf(bigInt))

// i: int f: float64 tf: bool str: string str2: string cs: string bigInt: int64

/*
go 형변환
*/
var thisInt = 3

var intToStr string

intToStr = strconv.Itoa(thisInt) // int -> string

fmt.Println("int to str", intToStr, reflect.TypeOf(intToStr)) // int to str 3 string

var thisStr = "33"

strToInt, err := strconv.Atoi(thisStr) // string -> int 이거는 2가지 리턴을 받더라. 문법임 내가 추가한게 아니고.

if err != nil {
fmt.Println(err)
} else {
fmt.Println("str to int", strToInt, reflect.TypeOf(strToInt)) // str to int 33 int
}

}
Prev
2019-01-27 13:01:03
Next