English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Golang의 구조(struct)는 사용자 정의 타입으로, 다른 타입의 항목을 그룹화할 수 있도록 허용합니다/단일 타입으로 조합됩니다. 현실 세계에서 특정 속성을 가진/필드의 실체는 모두 구조로 표현될 수 있습니다. 이 개념은 일반적으로 object-oriented programming에서의 클래스와 비교됩니다. 이는 상속을 지원하지 않지만 조합을 지원하는 가벼운 클래스라고 불릴 수 있습니다.
예를 들어, 주소는 name, street, city, state, Pincode를 가집니다. 다음과 같이 이 세 속성을 구조로组合하면 됩니다주소의미가 있습니다.
구조를 선언합니다:
type Address struct { name string street string city string state string Pincode int }
그 위에type키워드는 새로운 타입을 도입합니다. 그 뒤에는 타입의 이름이 있습니다(주소)과 키워드struct우리가 정의하고 있는 구조를 설명하기 위해입니다. 이 구조는 괄호 안에 있는 각 필드의 목록을 포함하고 있습니다. 각 필드는 이름과 타입을 가집니다.
주의:같은 타입의 필드를 조합하여 더 단축된 형태로 만들 수 있습니다. 예를 들어:
type Address struct { 이름, street, city, state string Pincode int }
구조 정의:구조 선언 문법:
var a Address
위의 코드는Address 형태의 변수를 사용할 수 있습니다. 기본적으로 이는 모든 필드가 초기 값으로 설정됩니다. 따라서 필드 name, street, city, state는 ""로 설정되고, Pincode는 0으로 설정됩니다.
이렇게 하면구조형태를 초기화하는 구조 텍스트로 변수를 초기화합니다아래와 같이:
var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}
주의:
필드를 구조 내에서 선언된 순서대로 전달해야 합니다. 또한, 위의 문법을 사용하여 필드의 일부만 초기화할 수 없습니다.
Go는이름: 값구조를 초기화하는 용어, 필드 순서는 중요하지 않습니다. 그리고 이는 필드의 일부만 초기화할 수 있습니다. 모든 미 초기화된 필드는 해당 필드의 초기 값으로 설정됩니다.
예를 들어:
var a = Address{"Akshay", "PremNagar", "Dehradun", "Uttarakhand", 252636}
package main import "fmt" //구조형태 정의 type Address struct { Name string city string Pincode int } func main() { //struct 타입의 변수를 선언 //모든 struct 필드를 초기화 //초기 값 var a Address fmt.Println(a) //선언 및 초기화 // struct를 구조 텍스트로 사용 a1 := Address{"Akshay", "Dehradun", 3623572} fmt.Println("주소1: ", a1) //필드 이름을 지정할 때 //구조를 초기화하려면 a2 := Address{Name: "Anikaa", city: "Ballia",Pincode: 277001} fmt.Println("주소2: ", a2) //미 초기화된 필드는 //들어간 값 a3 := Address{Name: "Delhi"} fmt.Println("주소3: ", a3) }
출력:
{ 0} 주소1: {Akshay Dehradun 3623572} 주소2: {Anikaa Ballia 277001} 주소3: {Delhi 0}
접근하려면구조의각 필드를 접근하려면(.)연산자.
package main import "fmt" //구조체 정의 type Car struct { 이름, 모델, 색상 string WeightInKg float64 } func main() { c := Car{Name: "Ferrari", Model: "GTC4", Color: "Red", WeightInKg: 1920} //구조 필드 접근 //점표기자를 사용하여 fmt.Println("Car Name: ", c.Name) fmt.Println("Car Color: ", c.Color) //새 값 할당 //구조체 필드를 가리키기 c.Color = "Black" //결과 출력 fmt.Println("Car: ", c) }
출력:
Car Name: Ferrari Car Color: Red Car: {Ferrari GTC4 Black 1920}
Golang의 포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 다음 예제와 같이 구조를 가리키는 포인터를 생성할 수 있습니다:
// 구조체를 가리키는 포인터 package main import "fmt" // 구조 정의 type Employee struct { firstName, lastName string age, salary int } func main() { //struct 변수의 주소를 전달 // emp8 emp8 := &Employee{"Sam", "Anderson", 55, 6000} //* emp8, // emp8구조의 firstName 필드 fmt.Println("First Name:", (*emp8).firstName) fmt.Println("Age:", (*emp8).age) }
출력:
First Name: Sam Age: 55
Golang은 emp8* emp8,
//구조를 가리키는 포인터 package main import "fmt" //구조 정의 type Employee struct { firstName, lastName string age, salary int } func main() { //구조체를 가리키는 포인터를 가져오기 emp8 := &Employee{"Sam", "Anderson", 55, 6000} // emp8.firstName를 사용하여 접근 //firstName 필드 fmt.Println("First Name: ", emp8.firstName) fmt.Println("Age: ", emp8.age) }
출력:
First Name: Sam Age: 55