Tank技術(shù)【3-6】GoLang語法實戰(zhàn)學習(4)

九、結(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容