Latest web development tutorials

언어 구조를 이동

동일한 유형의 데이터를 저장할 수있는 언어의 어레이를 이동하지만, 구조에서, 우리는 서로 다른 데이터 유형에 대한 다른 항목을 정의 할 수있다.

구조는 동일한 유형의 데이터 구성 또는 다른 유형의 데이터 세트의 연속으로 구성된다.

구조는, 각각의 책은 다음과 같은 속성이 책의 기록 라이브러리를 저장하는 등의 기록을 나타냅니다

  • 제목 : 제목
  • 저자 : 저자
  • 제목 : 주제
  • ID : 책 ID

구조 정의

구조 정의 형 구조체 명령문의 사용을 필요로한다. 구조체의 새로운 데이터 유형을 정의하는 것이며, 그 구조는 하나 이상의 멤버를 갖는다. 유형 이름 문은 구조를 설정합니다. 다음과 같은 형식의 구조는 다음과 같습니다

type struct_variable_type struct {
   member definition;
   member definition;
   ...
   member definition;
}

만약 구조의 타입을 정의하면, 그 다음 구문은 변수를 선언 할 수있다 :

variable_name := structure_variable_type {value1, value2...valuen}

구조에

당신이 구조체 멤버에 액세스하려면 도트 연산자 형식을 사용 (.) :. "A 구조체 멤버 이름을."

다음과 같이 구조체 키워드 정의를 사용하여 변수 구조를 입력 한 예는 다음과 같습니다

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* 声明 Book1 为 Books 类型 */
   var Book2 Books        /* 声明 Book2 为 Books 类型 */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   fmt.Printf( "Book 1 title : %s\n", Book1.title)
   fmt.Printf( "Book 1 author : %s\n", Book1.author)
   fmt.Printf( "Book 1 subject : %s\n", Book1.subject)
   fmt.Printf( "Book 1 book_id : %d\n", Book1.book_id)

   /* 打印 Book2 信息 */
   fmt.Printf( "Book 2 title : %s\n", Book2.title)
   fmt.Printf( "Book 2 author : %s\n", Book2.author)
   fmt.Printf( "Book 2 subject : %s\n", Book2.subject)
   fmt.Printf( "Book 2 book_id : %d\n", Book2.book_id)
}

다음과 같이 상기 동작 결과의 실시 예 :

Book 1 title : Go 语言
Book 1 author : www.w3big.com
Book 1 subject : Go 语言教程
Book 1 book_id : 6495407
Book 2 title : Python 教程
Book 2 author : www.w3big.com
Book 2 subject : Python 语言教程
Book 2 book_id : 6495700

함수 매개 변수로 구조

사용자는 파라미터로 함수에 전달 구조의 유형에 다른 데이터 유형을하고자 할 수있다. 예로서 상기 구조 변수에 액세스 :

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* 声明 Book1 为 Books 类型 */
   var Book2 Books        /* 声明 Book2 为 Books 类型 */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   printBook(Book1)

   /* 打印 Book2 信息 */
   printBook(Book2)
}

func printBook( book Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

다음과 같이 상기 동작 결과의 실시 예 :

Book title : Go 语言
Book author : www.w3big.com
Book subject : Go 语言教程
Book book_id : 6495407
Book title : Python 教程
Book author : www.w3big.com
Book subject : Python 语言教程
Book book_id : 6495700

구조 포인터

다음과 같이 다른 포인터 변수 유사한 구조에 대한 포인터를 가리키는을 정의 할 수 있으며, 형식은 다음과 같습니다

var struct_pointer *Books

메모리 포인터 변수 구조 변수를 해결할 수있는 상기 정의. 변수 주소를 구성을 참조하십시오, 당신은 구조 변수 앞에 앰퍼샌드를 배치 할 수 있습니다 :

struct_pointer = &Book1;

연산자를 사용하는 구조의 구성 부재에 대한 포인터를 사용하여 ".":

struct_pointer.title;

이 구조의 포인터는 상기 예 아래의 코드를 다시 이용하자 :

package main

import "fmt"

type Books struct {
   title string
   author string
   subject string
   book_id int
}

func main() {
   var Book1 Books        /* Declare Book1 of type Book */
   var Book2 Books        /* Declare Book2 of type Book */

   /* book 1 描述 */
   Book1.title = "Go 语言"
   Book1.author = "www.w3big.com"
   Book1.subject = "Go 语言教程"
   Book1.book_id = 6495407

   /* book 2 描述 */
   Book2.title = "Python 教程"
   Book2.author = "www.w3big.com"
   Book2.subject = "Python 语言教程"
   Book2.book_id = 6495700

   /* 打印 Book1 信息 */
   printBook(&Book1)

   /* 打印 Book2 信息 */
   printBook(&Book2)
}
func printBook( book *Books ) {
   fmt.Printf( "Book title : %s\n", book.title);
   fmt.Printf( "Book author : %s\n", book.author);
   fmt.Printf( "Book subject : %s\n", book.subject);
   fmt.Printf( "Book book_id : %d\n", book.book_id);
}

다음과 같이 상기 동작 결과의 실시 예 :

Book title : Go 语言
Book author : www.w3big.com
Book subject : Go 语言教程
Book book_id : 6495407
Book title : Python 教程
Book author : www.w3big.com
Book subject : Python 语言教程
Book book_id : 6495700