수색…
통사론
- //이 함수는 struct의 복사본을받습니다.
- func (t * T) exampleTwo (i int) (n int) {return i} //이 메소드는 구조체에 대한 포인터를 받고 그것을 수정할 수 있습니다
기본 방법
Go의 메소드는 수신기를 제외하고는 함수와 같습니다.
보통 수신기는 어떤 종류의 구조체 또는 유형입니다.
package main
import (
"fmt"
)
type Employee struct {
Name string
Age int
Rank int
}
func (empl *Employee) Promote() {
empl.Rank++
}
func main() {
Bob := new(Employee)
Bob.Rank = 1
fmt.Println("Bobs rank now is: ", Bob.Rank)
fmt.Println("Lets promote Bob!")
Bob.Promote()
fmt.Println("Now Bobs rank is: ", Bob.Rank)
}
산출:
Bobs rank now is: 1
Lets promote Bob!
Now Bobs rank is: 2
연결 방법
golang의 메소드를 사용하면 메서드에 포인터를 전달하고 다음과 같은 구조체에 포인터를 반환하는 "chaining"메서드를 수행 할 수 있습니다.
package main
import (
"fmt"
)
type Employee struct {
Name string
Age int
Rank int
}
func (empl *Employee) Promote() *Employee {
fmt.Printf("Promoting %s\n", empl.Name)
empl.Rank++
return empl
}
func (empl *Employee) SetName(name string) *Employee {
fmt.Printf("Set name of new Employee to %s\n", name)
empl.Name = name
return empl
}
func main() {
worker := new(Employee)
worker.Rank = 1
worker.SetName("Bob").Promote()
fmt.Printf("Here we have %s with rank %d\n", worker.Name, worker.Rank)
}
산출:
Set name of new Employee to Bob
Promoting Bob
Here we have Bob with rank 2
메소드의 인수로 증가 / 감소 연산자
Go는 ++ 및 - 연산자를 지원하지만 해당 동작은 c / c ++와 거의 유사하지만 해당 연산자가있는 변수는 함수의 인수로 전달 될 수 없습니다.
package main
import (
"fmt"
)
func abcd(a int, b int) {
fmt.Println(a," ",b)
}
func main() {
a:=5
abcd(a++,++a)
}
출력 : 구문 오류 : 예기치 않은 ++, 예상 쉼표 또는)
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow