zoukankan      html  css  js  c++  java
  • Go编程基础(介绍和安装)

     

    2018.10.07 19:41 字数 892 阅读 317评论 0

    Go(又称Golang[3])是Google开发的一种静态强类型编译型并发型,并具有垃圾回收功能编程语言。来自维基百科

    1.什么是Go语言?

    image.png

    Go是一门并发支持、垃圾回收和编译型系统编译语言,旨在创造一个门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。

    Go语言是Rob Pike以及Ken Thompson于2007年9月开始设计的,Go是基于Inferno操作系统所开发的。[4]Go于2009年11月正式宣布推出,成为开放源代码项目,并在LinuxMac OS X平台上进行了实现,后来追加了Windows系统下的实现。(这个类似土拨鼠的logo是由Rob Pike 的妻子 Renee French 绘制的)

    2. Go语言的优点

    Go语言的价值:Go在谷歌:以软件工程为目的的语言设计

    Go的主要特点有如下几点:

    • 1、类型安全和内存安全
    • 2、以非常直观和极低代价的方案实现高并发
    • 3、高效的垃圾回收机制
    • 4、快速编译(同时解决了C语言中头文件太多的问题)
    • 5、为多核计算机提供性能提升的方案

    3.Go语言的项目架构

    Go语言的工作目录如下表,根据约定,GoPath下需要建立3个目录

    目录含义
    bin 存放编译后生成的可执行文件
    pkg 存放编译后生成的包文件
    src 存放项目源码

    GOPATH是的你的工作目录,GOROOT是你的安装目录。

    程序的整体结构如下图所示:

    image.png

    4.Go语言的开发环境

    本教程采用go1.9以及goland 2018.1的开发环境,首先要学会环境配置(这里就不讲了,比较简单),然后开始Go的开发之旅了!

    1.新建一个HelloWord.go文件

    在右键新建的时候会两种文件格式:

    image.png

    Empty file是新建后是一个空文件,然后Simple Application新建后会有main函数的示例代码。

    package main
    import "fmt"
    func main() {
        fmt.Print("hello,world!")
    }
    

    Go程序的一般结构:

    • 1、Go程序是通过package来组织的;
    • 2、只有package名称为main的包可以包含main函数,一个可执行程序有且仅有一个main包;
    • 3、通过import关键字来导入其他非main包;
    • 4、通过const关键字进行常量的定义;
    • 5、通过在函数体外部使用var关键字来进行全局变量的声明与赋值;
    • 6、通过type关键字来进行结构(struct)或接口(interface)的声明;
    • 7、通过func关键字来进行函数的声明。

    运行结果如下:

    image.png

    2.基本类型

    go语言的基本类型如下:

    image.png
    image.png
    image.png

    示例如下:

    package main
    import (
        "fmt"
        "strconv"
    )
    func main() {
        //声明和赋值
        var a int = 65
        var c int = 75
        //简化赋值和显示强制转换
        b:= string(a)
        //转换为数字
        d:= strconv.Itoa(c)
        fmt.Println(b)
        fmt.Println(d)
    }
    

    结果如下:

    image.png

    因为string()表示将数据转换为文本格式,因此计算机中存储的任何东西本质都是数字,因此此函数自然地认为我们需要的是65表示的文本A。

    3.函数

    函数的调用如下:参考文件Go指南中文版

    //func 方法名  形式参数  返回参数类型
    func add(x int,y int) int {
        return x+y
    }
    //func add(x ,y int) int {
    //  return x+y
    //}
    func main() {
        fmt.Print(add(42,13))
    }
    

    4.多值返回

    package main
    import "fmt"
    func main() {
        a,b:=swap("hello","world")
        fmt.Print(a,b)
    }
    func swap(a string, b string) (string,string) {
            //这个可能是交换程序了,甚至不需要不需要一个临时变量,但是这个内部是怎么做的呢?
            return b,a
    }
    

    Q:go语言中swap方法是如何做的呢?

    5.变量以及短变量的使用

    package main
    import "fmt"
    var i,j int =1,2
    func main() {
        var c, python, java  = true,false,"no"
        //短变量的声明和赋值
        k:=3
        fmt.Print(i,j,c,python, java,k)
    }
    

    6.各种类型的初始值

    package main
    import "fmt"
    func main() {
        var i int
        var f float64
        var b bool
        var s string
        fmt.Printf("%v %v %v %q
    ", i, f, b, s)
    }
    
    image.png

    7.类型转换(必须显示转换,在Go中不能隐式转换)

    package main
    import (
        "math"
        "fmt"
    )
    func main() {
        var x, y int = 3, 4
        //将xy的值强制类型转换为float64类型
        var f float64 = math.Sqrt(float64(x*x+y*y))
        //unit无符号整数
        var z uint = uint(f)
        fmt.Print(x,f,z)
    }
    
    

    5.参考资料

    https://go-zh.org/doc/

  • 相关阅读:
    RMAN01009: syntax error: found "dot" 解决方法
    Oracle 11g 新特性 DB_ULTRA_SAFE 参数 说明
    Oracle 11g 新特性 Result Cache(结果高速缓存)说明
    Oracle 11g 新特性 DB_ULTRA_SAFE 参数 说明
    /dev/sdxx is apparently in use by the system; will not make a filesystem here! 解决方法
    CSDN博客之星 投票说明
    Oracle 11g 新特性 – ACFS 说明
    Oracle 与 iptables 和 SELinux 禁用关系 说明
    Vbox 安装 windows Server 2008 R2 报错 Info: An unexpected error has occurred 解决方法
    Oracle 11g 新特性 SecureFiles 说明
  • 原文地址:https://www.cnblogs.com/fengff/p/11447296.html
Copyright © 2011-2022 走看看