您的位置 首页 编程知识

Go 语言结构

在 中,结构是数据的简单容器。 可以有字段 没有附加任何方法 单独定义并与结构类型关联的方法。 下面显示了 r…

Go 语言结构

在 中,结构是数据的简单容器。

  • 可以有字段
  • 没有附加任何方法
    • 单独定义并与结构类型关联的方法。

下面显示了 ruby 和 golang 中的简单 book 类等效项。

class book   attr_reader(:title, :author)    def initalize(title, author)     @title  = title     @author = authoer   end end  # usage book = book.new('title', 'jon snow') 
登录后复制
// equivalent to `class book` in ruby type book struct {   title string,   author string } 
登录后复制

实例化 golang 类型

复合文字

复合文字是一步创建初始化复合类型的语法。我们可以实例化以下类型:

  • 结构
  • 数组
  • 切片
  • 地图

这里我们将一个新的 book 实例分配给变量 book

// composite literal book := book{   title: "title",   author: "author" } 
登录后复制

使用新关键字

较长的形式是使用 new 关键字。这类似于我们在 ruby 中使用 book = book.new(..)

实例化一个类的方式

我们将使用 = 符号分配书籍的属性(即标题和作者)。

// using the `new` keyword book        := new(book) book.title  = "book title" book.author = "john snow" 
登录后复制

没有短变量声明 (:=)

注意到我们在第一个示例中使用了符号 := 吗?

点击下载“”;

它是以下声明变量并为其赋值的详细方式的语法糖。

// without short virable declaration  // example 1 var book book // declare variable `book` of type `book` book.title = "book title" // assign the value to book variable book.author = "john snow"  // example 2 var count int count = 20 
登录后复制

工厂功能

当我们需要时,我们还可以使用工厂模式来简化结构体的初始化:

  • 添加额外逻辑
  • 添加默认值

假设我们希望将书名和作者标记的每个第一个字符大写。

// factory function func newbook(title string, author string) book {   return book{     title: titlelise(title), // default logic to "titlelise"      author: titlelist(author)   } }  func titlelise(str string) {   caser := cases.title(lanaguage.english)   return caser.string(str) } 
登录后复制

将函数附加到结构体

在 ruby 中,我们只需在类中定义一个函数即可。在这里,我们定义一个名为 to_string() 的函数来打印书名作者。

class book   attr_reader(:title, :author)    def initalize(title, author)     @title  = title     @author = authoer   end    # new function we added   def to_string()     put "#{title} by #{string}"   end end 
登录后复制

在 golang 中,我们通过将结构传递给函数来“附加”函数。

// equivalent to `class book` in ruby type book struct {   title string,   author string }  // attaching the function to the `struct` func (book book) tostring() string {   return fmt.sprintf("%s by %s", book.title, book.author) }  // usage book := book{   title: "title",   author: "author" }  book.tostring() // => title by author 
登录后复制

解释:

func (book Book) ToString() string 
登录后复制
令牌 描述

标题>

函数 函数关键字 (书本) 将函数附加到 book 结构类型

token description
func function keyword
(book book) attaching the function to the type book struct
– book: variable to the struct within the function
– book: type of the struct
tostring() name of the function
string return type of the function

– book:用于访问函数内结构的变量- book:结构的类型 tostring() 函数名称 字符串 函数的返回类型

表>

>

以上就是Go 语言结构的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/1280.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部