var str string = "Golang"
fmt.Println(str[0:2], str1[0],str[3:],str[:4])
문자열을 일반 + 연산으로 연결할 시에 매번 새로운 문자열 조합의 객체를 생성한다.
buffer 기반의 strings.Join 함수를 이용하면 비효율적인 연산 문제를 해결할수 있다.
import (
"fmt"
"strings"
)
...
str1 := "golang"
str2 := "hello"
strSet := []string{} //슬라이스 선언
strSet = append(strSet, str1)
strSet = append(strSet, str2)
fmt.Println("ex2 : ", strings.Join(strSet, ""))
slice2 := make([]int, 5, 5)
for i := 0; i < 30; i++ {
slice2 = append(slice2, i)
fmt.Println(i, " : caps : ", cap(slice2))
}
var slice1 []int
slice2 := []int{}
slice3 := []int{1, 2, 3, 4, 5}
slice4 := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
}
s2 := make([]int, 5, 5)
s1 := []int{1, 2, 3, 4, 5}
s2 := []int{8, 9, 10, 11, 12}
s1 = append(s1, 6, 7)
s2 = append(s1, s2...) // slice에 slice를 붙일때는 ... 붙여줌
s3 = append(s2, s3[0:3]...) //s3[0:3] : 13,14,15
When iterating over a map with a range loop, the iteration order is not specified and is not guaranteed to be the same from one iteration to the next. If you require a stable iteration order you must maintain a separate data structure that specifies that order.
[참고] Go 블로그 : https://blog.golang.org/maps#TOC_7.
// 1. 정석
var map1 map[string] int = make(map[string]int) // key:string value:int
// 2.자료형 생략
var map2 = make(map[string]int)
// 3.짧은 선언 : 리터럴
map3:=make(map[string]int)
// 3-1. 짧은 선언2
map4:=map[string]int{}
// 4. 선언과 동시에 초기화
map5:=map[string]int{
"apple":15,
"banana":40,
"orange":23,
}
// insert
map5["lemon"] = 100 // 추가
map1 := map[string]string{
"daum": "http://daum.net",
"naver": "http://naver.com",
"google": "http://google.com",
}
// 순서 보장 안되므로 랜덤 순서로 출력
for k, v := range map1 {
fmt.Println("ex2 : ", k, v)
}
for _, v := range map1 {
fmt.Println("ex2 : ", v)
}
value1 := map1["lemon"] // lemon 키에 해당하는 value 리턴
value2, ok := map1["lemon"] // ok에는 key가 존재하는지 안하는지에 대한 부울값이 리턴됨.
// 논리 연산에 응용하여 사용
if value, ok := map1["kiwi"]; ok {
fmt.Println("ex2 :", value)
} else {
fmt.Println("ex2 : kiwi is not exist")
}
[학습 자료] 인프런 - 쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
[공식사이트] https://golang.org/tutorial