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

陶瓷网站源码网站关键字选择标准

陶瓷网站源码,网站关键字选择标准,服装外包加工网,wordpress可视化编辑插件方法#xff1a; 方法是绑定在自定义类型上的#xff0c;常用在结构体上 方法只能通过绑定的自定义类型的变量来调用#xff0c;方法不能直接调用#xff0c;因为方法是和类型作关联的 方法是值拷贝的传递方式#xff0c;如果希望改变结构体变量的值#xff0c;需要通过…方法 方法是绑定在自定义类型上的常用在结构体上 方法只能通过绑定的自定义类型的变量来调用方法不能直接调用因为方法是和类型作关联的 方法是值拷贝的传递方式如果希望改变结构体变量的值需要通过结构体指针实现 方法名首字母大写为公共小写为私有与函数一致 创建格式 func (对象 类型) 方法名 (参数列表) (返回值列表){}调用 对象.方法名演示方法是值拷贝在方法中修改是不会影响原数据的 type Student struct {name string }// 创建了一个StudentMethod方法绑定了Student可以称为Student的方法 // s是Student的变量可以用来调用Student的成员 func (s Student) StudentMethod() {fmt.Println(我是Student的方法)fmt.Println(StudentMethod修改前, s.name)s.name 韩信fmt.Println(StudentMethod修改后, s.name) }func main() {stu : Student{itzhuzhu}stu.StudentMethod() // 调用方法fmt.Println(main运行修改后, stu.name) }输出 我是Student的方法 StudentMethod修改前 itzhuzhu StudentMethod修改后 韩信 main运行修改后 itzhuzhu三种不同调用的方式 type Student struct {name stringage int }func (s *Student) StudentMethod() {fmt.Println(*s) }func main() {// 普通方式调用s : Student{name: 韩信, age: 99}s.StudentMethod()// 方法值调用x : s.StudentMethodx()fmt.Printf(查看数据类型%T, x)// 方法表达式调用要和方法对象的类型保持一致方法对象是指针类型这里也要加上*y : (*Student).StudentMethody(s) }带参数的方法 type Count struct{}func (c Count) count(n int) {result : 0for i : 0; i n; i {result i}fmt.Println(result) }func main() {c : Count{}c.count(100) }带参数和返回值的方法返回xy的和 type Count struct{}func (c Count) CountMethod(x, y int) int {return x y }func main() {c : Count{}// 调用的时候要先有一个变量接收否则接收不到返回值countMethod : c.CountMethod(10, 20)fmt.Println(countMethod) }变量调用方法时该变量也会作为一个参数传递到方法如果是引用类型则进行地址拷贝否则为值拷贝 type Test struct{}func (t Test) TestMethod(x, y int) int {/*这里的变量t和main方法中的变量t不是同一个t因为是值拷贝所以main栈调用TestMethod方法时会将main栈的t拷贝一份到TestMethod方法中如果是指针那么拷贝的是内存地址*/return x y }func main() {t : Test{}testMethod : t.TestMethod(1, 2)fmt.Println(testMethod) }指针类型使用方法 type Test struct {num int }func (t *Test) TestMethod(x, y int) int {t.num 2fmt.Println(TestMethod修改为2, t.num)return x y }func main() {t : Test{}t.num 1fmt.Println(传递TestMethod方法前, t.num)testMethod : (t).TestMethod(1, 2)fmt.Println(调用完方法后, t.num)fmt.Println(t)// 也可以简写成以下模式因为编译器在底层做了优化在编译时会自动加上()testMethod2 : t.TestMethod(1, 2)fmt.Println(testMethod)fmt.Println(testMethod2) }输出 传递TestMethod方法前 1 TestMethod修改为2 2 调用完方法后 2 {2} TestMethod修改为2 2 3 3方法可以作用在指定的数据类型上所有的自定义类型都可以有方法除struct外int、float也可以有方法 type integer intfunc (i integer) print() {fmt.Println(print方法, i) }func (i *integer) change() {fmt.Println(change方法, i) } func main() {var i integer 10i.print()i.change()fmt.Println(main方法, i) }输出 print方法 10 change方法 0x14000124008 main方法 10如果一个类型实现了String()方法那么输出时会默认调用String() type Student struct {name stringage int }func (stu *Student) String() string {return String方法执行 }func main() {stu : Student{不知火舞, 99}fmt.Println(stu) }输出 String方法执行方法重写 方法重写是父类中的方法与子类方法重名的问题默认调用子类的方法如果需要使用父类的需要使用子类.父类.方法名调用 // 父类 type Person struct {name stringage int }func (p *Person) Show() {fmt.Println(我是Person的show方法) }// 子类 type Student struct {Person }func (s *Student) Show() {fmt.Println(我是Student的show方法) }func main() {s : Student{Person{name: 韩信,age: 99,}}s.Show() // 优先使用自己的//如果需要使用父类的需要明示使用父类调用s.Person.Show() }方法和函数的区别 方法有接受者而函数无接受者函数不可以重名而方法可以重名调用方式不一样 函数函数名(实参列表) 方法变量.方法名(实参列表)函数参数为值类型时不能传递指针类型为指针类型时不能传递值类型。不管方法是值类型还是指针类型都可以使用值或指针调用 注意判断方法是否为指针类型不应该从调用者出发 s.Test03()是由方法关联类型决定的(h Hero) test03()、(h *Hero) test04() type Hero struct {name string }// 值类型函数 func test01(h Hero) {fmt.Println(test01, h.name) //不知火舞 }// 指针类型函数 func test02(h *Hero) {fmt.Println(test02, h.name) //不知火舞 }// 普通方法 func (h Hero) test03() {h.name 干将莫邪 //值拷贝,不影响主函数Namefmt.Println(test03, h.name) // 干将莫邪 }// 指针类型方法 func (h *Hero) test04() {h.name 干将莫邪 // 指针会直接修改原数据fmt.Println(test04, h.name) // 干将莫邪 }func main() {h : Hero{不知火舞}test01(h)test02(h)h.test03()fmt.Println(main调用test03后, h.name)(h).test04()fmt.Println(main调用test04后, h.name) // 干将莫邪h.test04()// 等价 (p).test04 , 从形式上是传入值类型但是本质仍然是地址拷贝面试的时候会留坑让误以为传递的是指针联想到是指针类型的方法fmt.Println(main调用test04后, h.name) // 干将莫邪 }输出 test01 不知火舞 test02 不知火舞 test03 干将莫邪 main调用test03后 不知火舞test04 干将莫邪 main调用test04后 干将莫邪 test04 干将莫邪 main调用test04后 干将莫邪练习方法 键盘录入数据判断是奇数还是偶数 type TestMethod struct{}func (t *TestMethod) JudgeNumber() {var num intfmt.Println(请输入一个整数)fmt.Scan(num)if num%2 0 {fmt.Println(num, 是偶数)} else {fmt.Println(num, 是奇数)} }func main() {t : TestMethod{}t.JudgeNumber() }编写一个计算机方法实现加减乘除 type Calculator struct {Num1 float64Num2 float64 }func (c *Calculator) result() float64 {fmt.Println()fmt.Println(——————————开始计算——————————)fmt.Println(请输入第1个数字)c.Num1 0fmt.Scan(c.Num1)fmt.Println()c.Num2 0fmt.Println(请输入第2个数字)fmt.Scan(c.Num2)fmt.Println()var operator bytefmt.Println(请按数字选择运算符)fmt.Println(1.加 2.减 3.乘 4.除)fmt.Scan(operator)fmt.Println()var res float64switch operator {case 1:res c.Num1 c.Num2case 2:res c.Num1 - c.Num2case 3:res c.Num1 * c.Num2case 4:res c.Num1 / c.Num2default:fmt.Println(运算符输入有误)}return res }func main() {c : Calculator{}result : c.result()fmt.Println(结果为, result) }输出 ——————————开始计算—————————— 请输入第1个数字 10请输入第2个数字 20请按数字选择运算符 1.加 2.减 3.乘 4.除 1结果为 30
http://wiki.neutronadmin.com/news/185608/

相关文章:

  • 个体工商注册查询平台seo 专业
  • 如何免费做网站邢台信息港二手房出售
  • 做网站好的网站建设公司排名网站静态和伪静态意思
  • 做影视网站有什么风险大学生网站建设与网页设计报告
  • 高端网站开发程资讯网站的好处
  • 如何建设内部网站顺德做网站
  • 哈尔滨营销型网站制作什么网站可以找手工活做
  • wordpress建站全教程无锡网站制作价格
  • 武进建设局网站为何老是打不开网站做锚点
  • 石家庄 外贸网站建设公司排名网络营销包括哪些策略
  • 房产中介 网站模板石家庄专业网站设计电话
  • 精品课程网站建设开题报告重庆最有效的网站推广
  • 韩都衣舍网站建设方案网站开发的初始密码
  • 模板网站的缺点建网站需要有啥能力
  • 一个网站是如何知道是谁来访问青岛网站推广外包
  • 江门网页建站模板汉口江岸区城市建设局网站
  • 网站用户投稿怎么做各类网站网站建设的目标是什么意思
  • 网站手机版后台wordpress 后台 慢
  • 做面膜的网站烟台网页公司联系方式
  • 网站建设app开发学习智慧工业园区建设方案
  • 网站开发文档word网页设计的特点有哪些
  • 做网站的怎么学建设电商网站需要什么硬件
  • 欢迎进入河南国安建设集团有限公司网站编辑图片的软件
  • 杭州企业网站设计网站pv uv统计
  • 深圳正规做网站的公司一级a做爰片 A视频网站
  • 网站建站建设费用如何做一元购物网站
  • 宁波做网站排名的公司有哪些企业注册公司流程
  • 景安做网站教程天津制作网站公司推荐
  • 高端上海网站设计公司北京优化服务
  • 搭建网站团队计划怀化网站优化哪个好