Go(4)
-
append 함수
length 가 넘을시 새로운 주소 리턴func main() { // 길이 2, 용량 2 슬라이스 생성 s := make([]int, 2, 2) s[0], s[1] = 1, 2 // 내부 배열 주소 출력 (첫 요소 주소) fmt.Printf("Before append: %p\n", &s[0]) // 용량 꽉 찼으니 새 배열 할당됨 s = append(s, 3) // 내부 배열 주소 출력 (첫 요소 주소) fmt.Printf("After append: %p\n", &s[0]) // 결과 출력 fmt.Println("Slice:", s)} length가 넘지 않으면 기존의 배열 주소 리턴func main() { // 길이 2, 용량 5인 슬라이스 생성 (여유 용량 있음) s := make([]int, 2, ..
2025.06.08 -
Go의 구조체
Go에서는 구조체(Struct)의 인스턴스를 만들 때 Type{} 혹은 new(Type)을 사용한다.type Person struct { name string age int}func main() { // ① 값 타입 인스턴스 p1 := Person{name: "Alice", age: 30} // ② 포인터 타입 인스턴스 p2 := new(Person) p2.name = "Bob" p2.age = 40 fmt.Println(p1) // {Alice 30} fmt.Println(*p2) // {Bob 40}}- new(Person)은 *Person 타입을 반환한다 (포인터 인스턴스)- Person{}은 값 복사되며 구조체 ..
2025.06.08 -
Scan, Scanf, Scan 차이 정리
1. fmt.Scan- 입력 구분자: 공백 문자(스페이스, 탭, 개행 모두)- 입력 종료: 변수 개수만큼 입력받으면 종료- 버퍼 내 개행 문자 처리중간 개행(줄바꿈)은 구분자 역할로 자동 버려짐마지막 개행 문자는 버퍼에 남아있음n, err := fmt.Scan(&a, &b)입력:3 5 - 마지막 는 입력 버퍼에 남아있음 입력35- 중간 는 버려지고, 마지막 는 버퍼에 남음 2. fmt.Scanf- 입력 구분자: 형식 문자열에 따라 정확히 매칭- 입력 종료: 형식 문자열에 맞게 입력이 완료되어야 종료- 버퍼 내 개행 문자 처리:형식에 맞는 개행문자 \n 는 버퍼에서 제거(버려짐)예를들어 "%d %d\n" 에서 마지막 \n은 입력 버퍼에서 소비됨n, err := fmt.Scanf("%d %d\n", &a, ..
2025.06.03 -
Hello Go World 코드
ch3/ex3.1/ex3.1.gopackage mainimport "fmt" func main() { // Hello Go World 출력 fmt.Println("Hello Go World")} 1. package main- 모든 Go 코드는 패키지 선언으로 시작해야 한다.- main 패키지는 실행 가능한 프로그램을 의미한다.- 즉, Go 컴파일러는 package main을 만나면 "이 코드는 독립 실행 파일을 만든다"라고 인식한다.- main 패키지 내부에는 반드시 func main() 함수가 존재해야 실행 파일을 생성할 수 있다.- 실제 프로그램이 시작되고 끝나는 지점이 바로 main() 함수이다. 실행 가능한 프로그램 = 터미널에서 실행할 수 있는 파일(EXE 등)을 만들 수 있는..
2025.06.03