•  


Go by Example: Structs

Go by Example : Structs

Go’s structs are typed collections of fields. They’re useful for grouping data together to form records.

package
 main
import
 "fmt"

This person struct type has name and age fields.

type
 person
 struct
 {

    name
 string

    age
  int

}

newPerson constructs a new person struct with the given name.

func
 newPerson
(
name
 string
)
 *
person
 {

You can safely return a pointer to local variable as a local variable will survive the scope of the function.

    p
 :=
 person
{
name
:
 name
}

    p
.
age
 =
 42

    return
 &
p

}
func
 main
()
 {

This syntax creates a new struct.

    fmt
.
Println
(
person
{
"Bob"
,
 20
})

You can name the fields when initializing a struct.

    fmt
.
Println
(
person
{
name
:
 "Alice"
,
 age
:
 30
})

Omitted fields will be zero-valued.

    fmt
.
Println
(
person
{
name
:
 "Fred"
})

An & prefix yields a pointer to the struct.

    fmt
.
Println
(
&
person
{
name
:
 "Ann"
,
 age
:
 40
})

It’s idiomatic to encapsulate new struct creation in constructor functions

    fmt
.
Println
(
newPerson
(
"Jon"
))

Access struct fields with a dot.

    s
 :=
 person
{
name
:
 "Sean"
,
 age
:
 50
}

    fmt
.
Println
(
s
.
name
)

You can also use dots with struct pointers - the pointers are automatically dereferenced.

    sp
 :=
 &
s

    fmt
.
Println
(
sp
.
age
)

Structs are mutable.

    sp
.
age
 =
 51

    fmt
.
Println
(
sp
.
age
)

If a struct type is only used for a single value, we don’t have to give it a name. The value can have an anonymous struct type. This technique is commonly used for table-driven tests .

    dog
 :=
 struct
 {

        name
   string

        isGood
 bool

    }{

        "Rex"
,

        true
,

    }

    fmt
.
Println
(
dog
)

}
$
 go run structs.go
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
{Rex true}

Next example: Methods .

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본