목록언어/Golang (27)
SYeonni Study Room

슬라이스 리터럴은 길이가 없는 배열 리터럴와 같습니다. 아래는 배열 리터럴입니다. [3]bool{true, true, false} 이렇게 하면 위와 동일한 배열이 생성되고, 이를 참조하는 슬라이스가 만들어집니다. []bool{true, true, false} package main import "fmt" func main() { q := []int{2, 3, 5, 7, 11, 13} fmt.Println(q) r := []bool{true, false, true, true, false, true} fmt.Println(r) s := []struct { i int b bool }{ {2, true}, {3, false}, {5, true}, {7, true}, {11, false}, {13, true}, ..

슬라이스는 어떤 데이터도 저장할 수 없습니다. 이것은 단지 기본 배열의 한 영역을 나타낼 뿐입니다. 슬라이스의 요소를 변경하면 기본 배열의 해당 요소가 수정됩니다. 동일한 기본 배열을 공유하는 다른 슬라이스는 이러한 변경사항을 볼 수 있습니다. 슬라이스는 배열과 같지만, 길이가 고정되어 있지 않으며 동적으로 크기가 늘어납니다. 또한 배열과는 달리 레퍼런스 타입 그래서 값이 변경

구조체 리터럴은 필드 값을 나열하여 새로 할당된 구조체 값을 나타냅니다. Name: 구문으로 필드의 하위 집합만 나열할 수 있습니다. (명명된 필드의 순서는 무관합니다.) 특별한 접두사 & 은 구조체 값으로 포인터를 반환합니다.

defer문은 자신을 둘러싼 함수가 종료할 때까지 어떠한 함수의 실행을 연기합니다 연기된 호출의 인자는 즉시 평가되지만 그 함수 호출은 자신을 둘러싼 함수가 종료할 때까지 수행되지 않습니다. 위 테스트 코드 확인 시 Num() 함수에 무한루프를 구현해두었고 출력 시 . 점 하나만 출력되게 하였다. 그러고 main에서 defer 키워드를 이용했더니 함수가 종료되지않으니 꼐속 무한루프의 늪에 빠진걸확인함!
package main import ( "fmt" "math/rand" ) func Num(random int) int { random -= rand.Intn(10) return random } func main() { result := Num(rand.Intn(39)) switch { case result > 10: fmt.Println("10보다 작다") case result < 10: fmt.Println("10보다 크다") } fmt.Printf("끝") } c언어와 달리 switch 문에 break 가 없다.

상수는 변수처럼 선언되지만 const 키워드와 함께 선언됩니다. 상수는 character 혹은 string, boolean, 숫자 값이 될 수 있습니다. 상수는 := 를 통해 선언될 수 없습니다.

package main import ( "bufio" "fmt" "math/rand" "os" "time" ) //키보드 input으로 값 읽어오기 var stdin = bufio.NewReader(os.Stdin) // (int, error) > 리턴값을 여러개 쓴것 func InputIntValue() (int, error) { var n int // 입력함수 _, error := fmt.Scanln(&n) if error != nil { //stdin.ReadString('\n') fmt.Scanln('\n') } return n, error } func main() { rand.Seed(time.Now().UnixNano()) //설정한 범위 안에서 random값 나옴 r := rand.Intn(..