참고 사이트 : http://go-tour-kr.appspot.com/
A Tour of Go 사이트에서 실습한 내용을 요약한 글 입니다.
# 화면 출력
fmt.Println()
fmt.Println("Happy", math.Pi, "Day")
fmt.Printf("Now you have %g problems.",math.Nextafter(2, 3))
참고 : https://golang.org/pkg/fmt/
# 자료형
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8의 다른 이름(alias)
rune // int32의 다른 이름(alias), 유니코드 코드 포인트 값을 표현합니다.
float32 float64
complex64 complex128
# 함수 선언
func add(x int, y int) int { }
func add(x, y int) int { }
func swap(x, y string) (string, string) { }
func split(sum int) (x, y int) { } // 반환 변수 이름을 미리 정함
# 변수 선언
var x, y, z int
var c, python, java bool
var x, y, z int = 1, 2, 3
c, python, java := true, false, "no!" // ':=' 함수 안에서만 사용 가능
# 변수 초기화
var x, y, z int = 1, 2, 3
var c, python, java = true, false, "no!"
# 상수 선언
const Pi = 3.14
const World = "안녕"
const Truth = true
# 반복문 (for 밖에 없음)
for i := 0; i < 10; i++ { }
for sum < 1000 { }
for { } // 무한 루프
# 조건문
if x < 0 { }
if v := math.Pow(x, n); v < lim { } // 결과 v는 else에서도 사용 가능
# 구조체
type Vertex struct { X int; Y int }
v := Vertex{1, 2}
v.X = 4
# 구조체 리터럴
원하는 필드를 `{Name: value}` 구문을 통해 할당
r = Vertex{X: 1} // Y:0 is implicit
# 포인터
포인터 연산 제공 안함
p := Vertex{1, 2}
q := &p
# new
new(T) 는 모든 필드가 0(zero value) 이 할당된 T 타입의 포인터를 반환
(zero value 는 숫자 타입에서는 0, 참조 타입에서는 nil)
v := new(Vertex)
# 슬라이스 (Slices) // 배열
p := []int{2, 3, 5, 7, 11, 13}
p[1:4] // 3, 5, 7
p[:3] // 2, 3, 5
p[4:] // 11, 13
for i := 0; i < len(p); i++ { }
# 슬라이스 만들기
a := make([]int, 5)
b := make([]int, 0, 5) // 세번째 매개변수로 capacity 제한
var z []int // 빈 슬라이스, 최대 크기 0
참고 : http://golang.org/doc/articles/slices_usage_and_internals.html
# 레인지 // itrerator 개념
for 반복문에서 range 를 사용하면 슬라이스나 맵을 순회(iterates)
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow { } // v = 1, 2, 3... 128
출처 : http://lazypaul.tistory.com/268
'Go Lang' 카테고리의 다른 글
GO :: LiteIDE 개발 환경 만들기 (0) | 2016.04.08 |
---|---|
Go 언어 학습을 위한 사이트 (0) | 2016.04.06 |