九、結(jié)構(gòu)體
Go語言的結(jié)構(gòu)體和C語言是類似的。定義結(jié)構(gòu)體如下:
type books struct {
sName string
sAuthor string
nID int64
fPrice float64
sOwner string
}
使用結(jié)構(gòu)體有兩種辦法:
var myBook books
myBook.sName ="Go語言實戰(zhàn)"
myBook.sAuther = "Tank"
myBook.nID =139581
myBook.fPrice = 58.88
myBook.sOwner ="Tank"
theBook :=books{"Go語言實戰(zhàn)", "Tank", 139581, 58.88, "Dennis"}
yourBook := books{sName:"Go語言實戰(zhàn)",sAuther: "Tank", nID: 139581, fPrice: 58.88, sOwner: "Dennis"}
后兩個是直接用:=賦值來聲明結(jié)構(gòu)變量。
示例程序如下:
package main
import "fmt"
type books struct {
sName string
sAuthor string
nID int64
fPrice float64
sOwner string
}
func main(){
var myBook books
myBook.sName ="Go語言實戰(zhàn)"
myBook.sAuthor = "Tank"
myBook.nID =139581
myBook.fPrice = 58.88
myBook.sOwner ="Tank"
theBook :=books{"Go語言實戰(zhàn)", "Tank", 139581, 58.88, "Dennis"}
yourBook := books{sName:"Go語言實戰(zhàn)",sAuthor: "Tank", nID: 139581, fPrice: 58.88, sOwner: "Marry"}
fmt.Println(myBook)
fmt.Println(theBook)
fmt.Println(yourBook)
}
運行結(jié)果如下:
D:\Documents\GoTrial>go run struct.go
{Go語言實戰(zhàn) Tank 139581 58.88 Tank}
{Go語言實戰(zhàn) Tank 139581 58.88 Dennis}
{Go語言實戰(zhàn) Tank 139581 58.88 Marry}
十、函數(shù)
go語言函數(shù)聲明如下:
func plusFour(a int64,b int64,c int64,d int64) int64{
ret :=a + b + c + d
return ret
}
go語言函數(shù)可以有多個返回值,例如:
func dealInt(a int64, b int64) (int64,int64){
ret1 :=a/b
ret2 :=a%b
return ret1,ret2
}
程序如下:
package main
import "fmt"
func main(){
a := plusFour(54,35,66,82)
fmt.Println(a)
fmt.Println(dealInt(88,3))
}
func plusFour(a int64,b int64,c int64,d int64) int64{
ret :=a + b + c + d
return ret
}
func dealInt(a int64, b int64) (int64,int64){
ret1 :=a/b
ret2 :=a%b
return ret1,ret2
}
運行結(jié)果如下
D:\Documents\GoTrial>go run functions.go
237
29 1
十一、結(jié)構(gòu)體帶方法
結(jié)構(gòu)體可以帶上自己的函數(shù),如下面的程序所示, nArea()就是結(jié)構(gòu)體rect的函數(shù)
package main
import "fmt"
type rect struct {
nWidth, nHeight int64
}
func (r rect) nArea() int64 {
return r.nWidth * r.nHeight
}
func main(){
myR :=rect{25,34}
fmt.Println(myR)
fmt.Println(myR.nArea())
}
程序運行結(jié)果如下:
D:\Documents\GoTrial>go run structfunc.go
{25 34}
850