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

网站做seo需要大量文章产品推广平台

网站做seo需要大量文章,产品推广平台,梵克雅宝耳钉,网站开发职位要求深入理解与使用go之函数与方法–理解与使用 文章目录 引子函数与方法分类函数函数入参普通参数可变参数默认值返回命名不带命名带命名讨论init 函数defer 函数方法值接收指针接收构造函数引子 在 Go 语言中,函数被视为一等公民(First-Class Citizens),这意味着函数可以像其…

深入理解与使用go之函数与方法–理解与使用

文章目录

    • 引子
    • 函数与方法
      • 分类
      • 函数
        • 函数入参
          • 普通参数
          • 可变参数
          • 默认值
        • 返回命名
          • 不带命名
          • 带命名
          • 讨论
        • init 函数
        • defer 函数
      • 方法
        • 值接收
        • 指针接收
      • 构造函数

引子

在 Go 语言中,函数被视为一等公民(First-Class Citizens),这意味着函数可以像其他值(比如整数、字符串等)一样被操作、分配和传递。而方法是附加到给定类型的函数。附加类型称为接收器,可以是指针或值。

我们分别看两个例子:

func Print(r int) {fmt.Println(r)
}func Add(a, b int) int {var r intdefer Print(r)r = a + breturn r
}func main() {Add(1, 2)
}

这个打印结果是啥? ,再看下面的例子

type Student struct {Score int
}
func (s Student) Set(score int) {s.Score = score
}
func (s Student) Get() int {return s.Score
}
func main() {s := &Student{120}s.Set(88)fmt.Println(s.Get())
}

这个最终打印结果怎么不是我们希望的那样,我加地址符了哦,那么问题来了

  • defer函数的执行逻辑是啥,他和return到底内个先
  • 方法接收器我们应该给指针还是值
  • 我们应该使用结果命名参数么
  • go函数有可变数量参数么,参数是否有默认值
  • 泛型参数用处是什么
  • 函数里的变量都在栈上么

带着这些问题,我们来讨论讨论今天要说的函数与方法

函数与方法

分类

老规矩,还是先分类,其实显而易见的我们分成了两类

  1. 函数

    • 根据函数入参

      • 普通参数
      • 可变参数
      • 默认值
    • 根据返回命名参数

      • 返回类型参数
      • 返回命名参数
    • init

      初始化函数也值得说一说

    • defer

      我觉得有必要把 defer 单独拿出来说说,他和 return 的关系在某些情况下很难甄别

  2. 方法

    • 根据接收器
      • 值接收器
      • 指针接收器
  3. 构造函数

函数

函数入参
普通参数
func Add(a, b int) int {return a + b
}
// 调用: Add(1,2)
可变参数

举个栗子

func Add(s ...int) int {var sum intfor _, v := range s {sum += v}return sum
}
  • 可变参数 以同一类型 带3个点 作为入参

  • 如果有多个参数,可变参数只能作为最后一个参数

    func Add(name string, s ...int) int 
    
  • 可变参数调用 可以不传、传1到多个参数

    Add()
    Add(1)
    Add(1,2)
    // ...
    
  • 切片传入可变参数,可以使用语法糖

    slice := []int{1, 2, 3, 4, 5}
    Add(slice...)
    
默认值

默认参数值是指在函数定义中为参数提供一个默认值,如果调用函数时没有提供该参数的值,则使用默认值作为参数值,在 Go 语言中,函数没有直接支持默认参数值的功能。不过,我们可以依赖可变参数来构造一个

func SetProject(serverAddr string, ports ...int) {var port intdefaultPort := 80if len(ports) > 0 {port = ports[0]} else {port = defaultPort}fmt.Println(port)// other code here
}

我们调用

func main() {SetProject("user")SetProject("user", 8080)
}

这样就解决了 默认值的问题,不过有个弊端,就是我们始终只能有一个默认值参数,如果我们希望有多个呢?

结构体来凑

type Project struct {ServerAddr stringPort int
}
func SetProject(pro ...Project) {var project ProjectdefaultPort := Project{ServerAddr:"localhost",Port: 80,}if len(pro) > 0 {project = pro[0]} else {project = defaultPort}fmt.Println(project.ServerAddr, project.Port)// other code here
}
返回命名
不带命名
func Add(a, b int) int {return a + b
}
带命名
http://www.hkea.cn/news/198787/

相关文章:

  • 苏州网站开发公司济南兴田德润厉害吗网络自动推广软件
  • 广药网站建设试卷株洲最新今日头条
  • 网站建设管理考核办法微信推广平台怎么做
  • 网站新闻模块代码网络推广有哪些常见的推广方法
  • 合肥大型网站如何推广普通话
  • 高端网站制作软件怎么样推广自己的店铺和产品
  • 无障碍浏览网站怎么做关键词seo排名优化推荐
  • wordpress 247seo推广系统
  • 做深圳门户网站起什么名字好泰州seo外包公司
  • 网站视频上传怎么做百度站长平台论坛
  • wordpress农业模板下载小时seo
  • 做网站语言排名2018发帖推广哪个平台好
  • 销氪crmseo入门讲解
  • 蒙阴哪有做淘宝网站的钓鱼网站制作教程
  • 网站如何做导航条下拉菜单怎么做百度网页
  • 网站开发都做什么平台推广精准客源
  • 网站建设共享ip宁波seo搜索引擎优化
  • 学校网站建设必要性搜索引擎排名
  • 哪里有做区块链网站的百度网址大全在哪里找
  • 加盟平台网站怎么做竞价托管多少钱一个月
  • wordpress 微信 代码网站关键词怎么优化排名
  • 网站推广维护考研培训班哪个机构比较好
  • 网站后台生成器人工智能培训班收费标准
  • 在线做app的网站武汉网络营销公司排名
  • 了解深圳网站页面设计潍坊百度关键词优化
  • 制作网站怎样找公司来帮做seo词条
  • 网络销售有哪些站长工具seo排名
  • 做房产中介网站怎么注册一个自己的网站
  • 天津网站设计成功柚米全网推广成功再收费
  • 建设公司网站靠谱吗企业网站设计制作