Go简单了解

这篇具有很好参考价值的文章主要介绍了Go简单了解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.一直很好奇,go是不是像传说中的速度快,解决了多线程问题,快速进行了解了解,和java进行对比,他是怎么解决语言发展的问题的…,所有语言都是差不多的,只是熟练程度不同而已
1.go图标是土拨鼠,2009发行

docker使用go,解决了并发问题
google facebook 腾讯 百度 七牛云 京东 小米使用go开发
可以简单的开发web服务,不需要很多框架.区块链以太坊,嵌入式

2.特点

1.语法简单 只有i++ 没有括号
2.支持并发 不用多线程了
3.垃圾回收

3.环境

  1. go1.16 安装包
    cmd: go version

  2. 配置环境变量
    GOROOT安装路径 \bin
    GOPATH代码依赖 创建文件夹 bin pkg src

    go evc

  3. 开发工具 goland

4.代码

package main //相当于默认的包
import "fmt" //工具类 
func main(){   //定义方法
       fmt.PrintLn("Hello World")   //没有分号
 }
//font size调整字体
//开发工具报错
     cmd: go env -w GO111MODULE=off

5.代码1(js语法)

   var name string ="aaa"  //小写的
   //多个变量定义简单
    var name1,bb string 
    name= "aaa"
    //初始化并定义,自动推导
         name :="aaa"
         age :=10
   var(   //定义多个变量
               name string
               age int
      )

   fmt.Printf("%T,%p",name,&age) //查看类型,查看地址
  
   var a int =100
   var a int =300
   a,b = b,a //变量交换,区别于其他语言

   //定义函数
       func test() (int,int){ //返回值
           return 100,200
       }
    
        a,_: =test() //没有类了 接收匿名变量,不占用内存空间,也不分配内存,会丢弃
       //必须要使用,不然报错
      //全局变量,函数外,
  //常量
          const URL string="aaa"
          const a,b,c =3,14,"aaa",false
  //iota  常量计数器计算 会自动+1 不定义的话,可以对数组遍历,用得不多
         const(
          a =iota  //0
          b          //1
           c="aaa"    //给标号2
           d             //3
      )

5.数据类型(好像js啊,又像java一样强类型)

       var flag bool =true //默认false
   //整形
       var age int64 =19 
        var age uint64 =19  //无符号
         //32可能会精度丢失
       var money float64=3.14 //%f打印 默认6位小数 ,%.1f保留一位小数并且4四舍五入
         var age byte =19  
         var aa string ="" +"xxx" // %s ,%d 打印ASCIII码,中文打印GBK
   //类型转换
       c: =float64(a)  //int转float64 ,java使用(float)强制转换和隐式 ,这里没有优先级,
       d:=int(f)
   //但是使用 float64转float32会丢失

6.关系运算符 && || == !

   if !(a&&b){  //去括号
        
    }else{

    }
   //位运算 用于二进制加密解密,安全   ^异或: 不同为1  >> <<
      var a uint=60
       var a uint=13
           a & b                          //看二进制%b
    // &^可以清空特点的位 比如 1010 &^ 0011 = 1000 如果b为0取a的值,不是就取0,这个代码是清空了a的后两位, b代表清空哪里

7.其他运算符 & 和指针

  var a int *

8.输入

 var x int
 var y float64
fmt.ScanLn(&x,&y)

9.语法 没有小括号

 if a>20 && b<20 {
 }else if a>30 && b<20{

 } else{

 }

  switch score{ //?
      case 90:
      case 50,60,70:
          fallthrough //穿透到后面的
      default:
            break //停止穿透

     for i:=1 ;i<=10;i++{
            
     }
          //无限循环
         for{

         }

  }

10.字符串

     str:="aaa"
     len(str)   
 fmt.Printf("aaa",str[2]) //ascill码
      fmt.Printf("%c",str[2])
   for i,v:=range str{
         //下标和值
   }
   str[2]= 'a' //错误的,不能转,是int

11.函数

add(1,2)
func add(a,b int)(int) {
      c:=a+b
      return c
  }
func add() {
     
  }
func add() int {
      return 10
  }
func add()(string,string ){
      return "aa","bb"
  }

//要放在最后可变参数,只能一个
func add(nums ...int) int {
        len(nums)
       nums[0]
      return 10
 }

12.值传递 基础类型,arr struct

 arr1:=[4]int{1,2,3,4}
       
func update(arr2 [4] int){
  //值传递,复制一份,不改原数据
  fmt.Println("aaa",arr2[1])
  arr2[1]=10
}

//引用传递(值变化,传入地址) 切片(可扩容的数组) map chan
   s1: =[]int{1,2,3,4}

func aa(s2 []int)

13.作用域 就近原则

   for b:=1; b<=10
      fmt.PrintLn(b) //报错,只能循环使用

14.递归函数, 有就出结果,没有死循环
15.defer推迟执行函数最后执行,多个逆序执行 1cba

defer func1("a")
   func1("1")
defer func1("b")
defer func1("c")
  //关闭操作,写日志

16.函数的类型是 func()

  fmt.Printf("%T",f1) //如果有返回值也不一样
  //函数类型的变量
  var f5 func(int,int)
   f5=f1
  f5(1,2) //地址一样
  f2:=f1
  //匿名函数
  f3:=func(){
   }
  f3()
   //执行
   func(){
   }()
    f3:=func(a int,b int) int {
              return a+b
    }  //返回值 
  f3(1,2)
   //支持函数里面传函数(高阶函数)
   //回调函数(被调用的) 
func main(){
   oper(10,20,func()(int){})
}


func oper(a,b int ,fun func(int,int) int) int{
   return 10

})
   

17.函数闭包 不推荐使用可读性差(函数里面定义函数 内层操作外层变量,创建的函数的值不会被销毁,只有复制另外一个函数才重新创建)

func main(){
    r1:=aa()//1
   r1:=aa() //2
   r2:=aa()//1 创建新函数

} 

func aa()func () int{ //返回函数
     a:=1
   func1:= func bb(){
          return a++
    }
     return func1
}

18.go语言的面向对象是使用结构体指针实现的(c语言使用比较友好)

type Person struct {
    name string
    age  int
}

func (p *Person) SayHello() {
    fmt.Printf("Hello, my name is %s and I'm %d years old.\n", p.name, p.age)
}
19.没有继承和多态,实现不一样
go

```java

```java
type Animal struct {
    name string
}

func (a *Animal) Speak() {
    fmt.Println("I'm an animal.")
}

type Dog struct {
    Animal // 嵌入Animal类型
    breed  string
}

func main() {
    d := Dog{
        Animal: Animal{name: "Buddy"},
        breed:  "Labrador",
    }
    d.Speak() // 调用嵌入类型Animal的方法
    fmt.Println(d.name) // 访问嵌入类型Animal的字段
}

19.总结文章来源地址https://www.toymoban.com/news/detail-767932.html

  1. 对比java语法确实简化许多,但是那个类型我写着好别扭, var a int64 可能写java写习惯了…
  2. 解决多线程问题, 直接写个 go 函数名就解决了,java需要写多线程
  3. 继承和多态还是java 比较简洁,用指针看起来不大舒服…
  4. go开发结束代码没有 ; 号,可能我觉得他的作用还是很大的, 如果我要复制代码会格式变化,没有分号可能可读性比较弱
  5. go语言用在docker,但是生态还没有java好,可发掘的潜力比较大

到了这里,关于Go简单了解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】go编程语言适合哪些项目开发?

    前言 在当今数字化时代,软件开发已成为各行各业的核心需求之一。 而选择适合的编程语言对于项目的成功开发至关重要。 本文将重点探讨Go编程语言适合哪些项目开发,以帮助读者在选择合适的编程语言时做出明智的决策。 Go 编程语言适合哪些项目开发? Go是由Google开发

    2024年02月04日
    浏览(80)
  • 【Golang】VsCode下开发Go语言的环境配置(超详细图文详解)

    📓推荐网站(不断完善中):个人博客 📌个人主页:个人主页 👉相关专栏:CSDN专栏、个人专栏 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 ​ 话说在前,Go语言的编码方式是 UTF-8 ,理论上你直接使用文本进行编辑也是可以的,当然为了提升我们的开发效率我们还是需

    2024年02月07日
    浏览(86)
  • 前端jd要求:了解一门后端开发语言优先 解决方案之Node.js

    作为前端开发者,了解一门后端开发语言可以为我们提供更多的职业机会和技术优势。在当今的技术领域中,前后端分离的开发模式已经成为主流,前端和后端的协作和沟通变得越来越紧密。因此,作为前端开发者,学习一门后端语言已经成为提高自己技能的重要途径。 以下

    2024年02月12日
    浏览(52)
  • 【go语言开发】redis简单使用

    本文主要介绍redis安装和使用。首先安装redis依赖库,这里是v8版本;然后连接redis,完成基本配置;最后测试封装的工具类 欢迎大家访问个人博客网址:https://www.maogeshuo.com,博主努力更新中… 参考文件: Yaml文件配置,Config使用 Log日志封装 常用工具类封装 命令行安装redis

    2024年03月12日
    浏览(60)
  • Golang:Go语言结构

    在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 表达式 注释 接下来让我们来看下简单的代码,该代码输出了\\\"Hello World!\\\": 让我们来看下以上程序的各个部分: 第一

    2024年02月10日
    浏览(59)
  • Go简单了解

    0.一直很好奇,go是不是像传说中的速度快,解决了多线程问题,快速进行了解了解,和java进行对比,他是怎么解决语言发展的问题的…,所有语言都是差不多的,只是熟练程度不同而已 1.go图标是土拨鼠,2009发行 docker使用go,解决了并发问题 google facebook 腾讯 百度 七牛云 京东 小米使用

    2024年02月03日
    浏览(24)
  • golang实现webgis后端开发

    目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回  2.前端传入的geojson储存到数据库 3、其他功能实现 总结         停更了接近一个月都在研究一门新语言gola

    2024年02月08日
    浏览(50)
  • 【GoLang】MAC安装Go语言环境

    小试牛刀 首先安装VScode软件 或者pycharm mac安装brew软件  brew install go 报了一个错误 不提供这个支持  重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env  可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc,  

    2024年02月15日
    浏览(60)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(93)
  • 【Golang】VScode配置Go语言环境

    安装VScode请参考我的上一篇博客:VScode安装_㫪548的博客-CSDN博客 接下来我们直接进入正题: Go语言(又称Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言具有简洁、高效、可靠和易于阅读的特点,被设计用于解决大型项目的开发需求。它结合了静态类型

    2024年02月03日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包