当前位置: 首页 > wzjs >正文

南宁建网站必荐云尚网络工作总结范文简短

南宁建网站必荐云尚网络,工作总结范文简短,支持api网站开发,企业门户网站建设市场1.go语言的接口是怎么实现 接口(interface)是一种类型,它定义了一组方法的集合。任何类型只要实现了接口中定义的所有方法,就被认为实现了该接口。 代码的实现 package mainimport "fmt"// 定义接口 type Shape inte…

1.go语言的接口是怎么实现

接口(interface)是一种类型,它定义了一组方法的集合。任何类型只要实现了接口中定义的所有方法,就被认为实现了该接口。

代码的实现

package mainimport "fmt"// 定义接口
type Shape interface {Area() float64Perimeter() float64
}// 定义实现接口的类型
type Rectangle struct {Width  float64Height float64
}// 实现接口方法
func (r Rectangle) Area() float64 {return r.Width * r.Height
}func (r Rectangle) Perimeter() float64 {return 2 * (r.Width + r.Height)
}func main() {// 使用接口var s Shaperect := Rectangle{Width: 4, Height: 5}s = rectfmt.Println("面积:", s.Area())       // 输出: 面积: 20fmt.Println("周长:", s.Perimeter())  // 输出: 周长: 18
}

理解与记忆方法
1接口是方法的集合:接口定义了一组方法,任何类型实现了这些方法就实现了接口。
2隐式实现:Go 不需要显式声明实现某个接口,只要类型的方法集包含接口的所有方法即可。
3空接口:interface{} 是最通用的接口,可存储任何类型值,用于灵活性需求。
4接口值的内部结构:接口值包含动态类型信息和实际数据值,支持类型断言和类型切换。
5鸭子类型:如果一个东西走起来像鸭子,叫起来也像鸭子,那么它就是鸭子。即,只要类型实现了接口的方法,就被认为实现了接口。

2.go语言使用断言时会发生拷贝吗

**类型断言是否会发生拷贝,取决于接口值的存储方式

场景 1:接口存储的是值类型(直接拷贝)

场景 2:接口存储的是指针类型(不拷贝)

3.go语言中如何访问私有成员

1.导出公有方法【推荐度:★★★★★】(get和set)
package mainimport "fmt"// 定义一个结构体
type Person struct {name string  // 私有字段age  int     // 私有字段
}// 导出 Get 方法 - 获取 name
func (p *Person) GetName() string {return p.name
}// 导出 Set 方法 - 设置 name
func (p *Person) SetName(newName string) {p.name = newName
}// 导出 Get 方法 - 获取 age
func (p *Person) GetAge() int {return p.age
}// 导出 Set 方法 - 设置 age
func (p *Person) SetAge(newAge int) {if newAge >= 0 {p.age = newAge} else {fmt.Println("年龄不能为负数")}
}func main() {// 创建 Person 实例person := Person{name: "张三",age:  25,}// 调用 Get 方法fmt.Println("姓名:", person.GetName()) // 输出: 姓名: 张三fmt.Println("年龄:", person.GetAge())  // 输出: 年龄: 25// 调用 Set 方法person.SetName("李四")person.SetAge(30)fmt.Println("新姓名:", person.GetName()) // 输出: 新姓名: 李四fmt.Println("新年龄:", person.GetAge())  // 输出: 新年龄: 30// 测试设置非法年龄person.SetAge(-5) // 输出: 年龄不能为负数
}
2.反射(reflect包)【推荐度:★★★】
导入反射包:在代码中导入 reflect 包。
获取反射对象:使用 reflect.TypeOf 获取类型的反射对象,reflect.ValueOf 获取值的反射对象。
获取字段:通过反射对象的 FieldByName 或 Fields 方法获取结构体的字段。
设置可导出性:如果字段是私有的(小写开头),需要通过反射设置其可导出性(CanSet)。
访问和修改字段:使用反射对象的 Interface 方法获取字段的值,Set 方法修改字段的值
package mainimport ("fmt""reflect"
)// 定义一个结构体
type Person struct {name string  // 私有字段age  int     // 私有字段
}func main() {// 创建 Person 实例person := Person{name: "张三",age:  25,}// 使用反射访问私有字段accessPrivateField(&person)
}// 使用反射访问私有字段
func accessPrivateField(obj interface{}) {// 获取反射对象val := reflect.ValueOf(obj).Elem() // 获取指针对应的值// 获取 name 字段nameField := val.FieldByName("name")if nameField.CanSet() {fmt.Println("name 字段值:", nameField.Interface())// 修改 name 字段值nameField.SetString("李四")}// 获取 age 字段ageField := val.FieldByName("age")if ageField.CanSet() {fmt.Println("age 字段值:", ageField.Interface())// 修改 age 字段值ageField.SetInt(30)}// 打印修改后的值fmt.Println("修改后的 person:", obj.(*Person))
}
3.同包内直接访问【推荐度:★★★★】

 

自学go语言笔记,希望我们可以一起学习!

http://www.dtcms.com/wzjs/556164.html

相关文章:

  • 南宁住房和城乡建设局网站济南活动搭建公司
  • 洛阳住房与城乡建设厅网站重庆网站seo教程
  • 小城镇建设网站网络推广的常用方法
  • 网页计划书网站的seo方案
  • 网站可以换域名吗免费培训网站
  • 重庆做网站需要多少钱垂直网站建设
  • 中国建设教育网站官方商贸有限公司经营范围
  • 长春网站优化团队django做网站和js做网站
  • 站长资讯泉州建站模板系统
  • 陕西手机网站制作php网站模板源码
  • 做网站功能长沙企业网站开发微联讯点
  • 郑州网站开发公司哪家好如何利用某个软件做一个网站
  • 面包店网站功能建设与栏目划分phpcms做企业网站授权
  • 网站建设加盟合作手机有软件做ppt下载网站有哪些内容吗
  • 二手书网站建设的意义工信部备案查询网官网
  • 做网站收费 优帮云南充房产网官网
  • 重庆产品网站建设广州白云建方舱医院
  • 中原彼得堡航空学院网站的建设青岛中小微企业互联网站建设补贴
  • 辽宁省城乡住房建设厅网站技术支持 东莞网站建设 轴承
  • 青岛大学网站建设wordpress md
  • 律师网站建设哪家专业哈尔滨建站系统
  • 贵阳优化网站建设网站被百度收录很重要
  • 关于建设网站的书本婚礼网站有哪些
  • wordpress无法管理站点绿派网站建设
  • 怎么制作网站模版深圳福田车公庙网站建设
  • wap网站要花多少钱做微课的网站
  • 免费网站建设免费咨询专业网站设计师去哪找
  • 海门住房和城乡建设部网站2018网站开发
  • 一起做网店 网站打不开广东省白云区邮政编码
  • 长沙网站开发公wordpress无法跳转正确页面