新年学新语言Go之二

news2025/1/13 19:41:02

一、前言

上文 新年学新语言Go之一讲了Go的牛逼之处,给自己找一个学习的理由,但是学任何一门语言基础语法还是要先掌握,虽然这是一件很枯燥的事。

二、环境搭建与HelloWorld

1、配置环境

从https://golang.google.cn/dl/下载Mac环境Go最新版本1.17.6,将go1.17.6.darwin-amd64.tar解压后整个go文件夹复制到/usr/local/目录下,然后配置环境变量(注:这和所有二进制包安装步骤都差不多)。

vim .bash_profileexport GO_HOME=/usr/local/goexport PATH=$PATH:$GO_HOME/binsource .bash_profilego version输出 go version go1.17.6 darwin/amd64表示配置正常

集成开发环境可以用GoLand或VSCode,GoLand需要收费还有点小贵,我们还是用VSCode吧,配置好Go环境然后在VSCode上安装Go插件即可。

2、创建HelloWorld例子

创建目录goinaction,然后执行go mod init goinaction进行初始化。

3、HelloWorld例子解析

  • package

        包命名的惯例是使用包所在目录的名字。

         定义为main包有特殊含义,编译程序会把这种包编译为二进制可执行文件。

  • import

          import 告诉编码器到磁盘的哪里去找到所需要的导入包。

          编译器会使用Go环境变量设置的路径,先从Go安装路径找然后再从GOPAT目录下找。

          导入包时使用全路径,除非是系统包。

          支持远程导入,比如可以 import "github.com/spf13/viper"。

          支持导入后重命名避免不同目录有相同包名冲突。

  • main函数

          当编码器发现包的名字为main时,它会去找main函数创建可执行文件,main函数就是程序的入口。

  • 命令行执行

        go build helloworld.go,编译生成可执行文件,可以将生成的文件copy到相同操作系统下直接执行,并不需要目标机器安装了Go环境。

        go run helloworld.go  编译代码并执行。

三、交叉编译

交叉编译对于Java程序员可能比较陌生,对于C程序员肯定很熟悉,交叉编译就是在一个平台上生成另外一个平台上可执行代码。

Mac平台编译Linux、Window平台64位可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build helloworld.go

CGO_ENABLED=0 GOOS=window GOARCH=amd64 go build helloworld.go

Window平台编译Mac、Linux平台64位可执行程序

SET CGO_ENABLED=0 SET GOOS=darwin3 SET GOARCH=amd64 go build helloworld.go

SET CGO_ENABLED=0 SET GOOS=linux       SET GOARCH=amd64 go build helloworld.go

GOOS:目标可执行程序运行的操作系统,支持 darwin,freebsd,linux,windows,darwin指的是Mac系统。

GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm。

注:上面Mac平台编译Linux平台(RedHatEnterprise)测试通过,其它没有做过测试。

四、基础语法

1、变量

在Go中定义变量名用var,var name type =value,如果在函数体内可以用 varName := value,变量命名采用驼峰法。

2、if/else

3、for

4、Go函数

注:今天不想再继续再写了,数组和指针这些下一节再写(学),基础语法稍微花点时间熟悉一下就行,找出和你常用开发语言差异对比一下会记得牢一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干洗店小程序,上门洗鞋洗衣下单算软件开发;

干洗店小程序,上门洗鞋洗衣软件; 有多个小程序开发案例 洗衣店小程序 是一款适用于洗衣店、干洗店等洗鞋店小程序; 干洗店小程序功能有: 1.(支持上门取送、送货到店、寄存网点、智能衣柜四种下单方式) 用户下单-上门取货拍照-送达门店工厂-入…

页面的动静分离

动静分离概念: 访问静态()和动态页面(tomcat)分开静态页面,由nginx提供服务,静态页面由tomcat提供服务。实现动态和静态页面负载均衡。 实验需求: 1台nginx代理 192.168.10.10 四层代理 2台nginx 提供静态页面 192.168.10.2…

四维轻云主要功能介绍

《四维轻云》是一款轻量化的地理空间数据管理云平台,支持地理空间数据的在线管理、编辑以及分享。平台有项目管理、数据上传、场景搭建、发布分享、素材库等功能模块,支持多用户在线协作管理,实现了轻量化、便捷化的空间数据应用。 一、发布…

详解使用sklearn实现一元线性回归和多元线性回归

[Open In Colab] 文章目录 1. 线性回归简介2. 使用sklearn进行一元线性回归3. 线性回归的coef_参数和intercept_参数4. 使用sklearn实现多元线性回归4.1 利用PolynomialFeatures构造输入4.2 进行多元线性回归 5. 总结 import numpy as np import matplotlib.pyplot as plt1. 线…

基于SSM的洗衣店管理系统

基于SSM的洗衣店管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 管理员界面 预约列表 种类管理 用户界面 摘要 洗衣店管理系统是一种利用现代技…

java 通过Tess4j 读取图片中的文字

Maven依赖导入Tess4j <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></de…

UI设计师岗位的基本职责八篇(合集)

UI设计师岗位的基本职责1 职责&#xff1a; 1. 负责公司互联网产品app、web、h5等的用户界面设计工作; 2. 负责运营活动相关的平面及视频设计支持; 3. 负责完成产品相关的界面、图标、动画等的图形界面设计&#xff0c;并参与制定、编写产品视觉设计规范文档; 4. 整理和分…

音频抓取代码示例

以下是一个使用DefaultsKit库的简单爬虫程序&#xff0c;用于爬取音频。代码中使用了https://www.duoip.cn/get_proxy的API获取代理服务器。 import Foundation import DefaultsKit ​ let url "https://www.douban.com/music" // 目标网站URL let proxyUrl "…

代码随想录算法训练营第二十五天丨 回溯算法part03

39. 组合总和 思路 题目中的无限制重复被选取&#xff0c;提示&#xff1a;1 < candidates[i] < 200。 本题和77.组合 (opens new window)&#xff0c;216.组合总和III (opens new window)的区别是&#xff1a;本题没有数量要求&#xff0c;可以无限重复&#xff0c;但…

【二层环路】交换机二次原路排查思路

以太网交换网络中为了提高网络可靠性&#xff0c;通常会采用冗余设备和冗余链路&#xff0c;然而现网中由于组网调整、配置修改、升级割接等原因&#xff0c;经常会造成数据或协议报文环形转发&#xff0c;不可避免的形成环路。如图1所示&#xff0c;三台设备两两相连就会形成环…

[解决]修复 win 32/64 位操作系统上的 PyAudio pip 安装错误

一、说明 Python3.7 无法安装pyaudio&#xff0c;度娘的结果基本都是这个&#xff0c;pip install pyaudio.....然而十有八九你的电脑不买账&#xff0c;会报错。本篇将介绍如何在win10anaconda安装pyaudio。 二、过程叙述 我有一台 Windows 10 电脑&#xff0c;我想安装 pyau…

本地jar打包成maven依赖,上传到私服

本地打包jar成maven依赖 mvn install:install-file -Dfile“\oss\xmlBeans\rvdMsgWrapper.jar” -DgroupId“hk.gov.xmlBeans” -DartifactId“noNamespace” -Dversion“1.0.0” -Dpackaging“jar” 上传到私服 登录进入到Upload 页面 上传 上传完成&#xff0c;到仓库查看…

LED路灯浪涌保护器行业应用解决方案

LED路灯是一种利用LED发光二极管作为光源的节能环保的城市道路照明设备。LED路灯具有寿命长、光效高、色温可调、无污染等优点&#xff0c;已经成为城市道路照明的主流选择。 然而&#xff0c;LED路灯也面临着一些问题&#xff0c;其中之一就是雷击浪涌的威胁。雷击浪涌是指由…

用Python做一个文件夹整理工具

文章目录 简介文件夹对话框文件映射组件完整组件 简介 我们的目的是做一个像下面这样的工具&#xff0c;前面两个输入框&#xff0c;用于输入源路径和目标路径&#xff0c;下面的图片、视频、音乐表示在目标路径中创建的文件夹&#xff0c;后面的文件后缀&#xff0c;表示将这…

HTML 表格及练习

表格 概述 表格是一种二维结构&#xff0c;横行纵列。 由单元格组成。 表格是一种非常“强” 的结构&#xff1a; 每一行有相同的列数&#xff08;单元格&#xff09;&#xff0c;每一列有相同的行数&#xff08;单元格&#xff09; 同一列的单元格&#xff0c;宽度&#…

《实验细节》使用PEFT库常见错误

《实验细节》使用PEFT库常见错误 安装问题常用命令使用问题问题1安装问题 首先给出用到的网站 更新NVIDIA网站https://www.nvidia.com/Download/index.aspx 2. 使用PEFT的优秀demo https://www.philschmid.de/fine-tune-flan-t5-peft 3. 下载一些库的必备网站 https://pypi.or…

(完全解决)latex如何设置某段文字向右对齐

开门见山&#xff0c;老子就是想要下图中日期的效果&#xff0c;可以看到&#xff0c;日期向右对齐。 很多人给的是下面这个方案&#xff1a; \begin{flushright}Sep 2020-July 2023 \end{flushright}但是试过了好像不行&#xff0c;其是换一行&#xff0c;然后向右对齐。 …

下拉选择器的树状结构图

类似&#xff1a;【Vue-Treeselect 和 vue3-treeselect】树形下拉框 一&#xff1a;图 二&#xff1a;如果有多层级的数据结构&#xff0c;可以用treeselect插件实现 1、安装&#xff1a; npm install --save riophae/vue-treeselect 2、实现&#xff1a; <el-form ref&qu…

深入了解RPA业务流程自动化的关键要素

在RPA业务流程自动化实施过程中&#xff0c;哪些因素起着至关重要的作用&#xff1f;这其实没有一个通用的答案&#xff0c;每一个RPA业务流程自动化的部署&#xff0c;都需要结合具体场景去调整&#xff0c;并且进行全面的规划。 首当其冲是要关注以下几点&#xff1a; 1、专…

想提高工作效率?这里有五款实用工具推荐

​ 想提高工作效率&#xff1f;这里有五款实用工具推荐&#xff01;搜索一下就能下载到。 1.鼠标控制——MouseInc ​ MouseInc是一款创新的鼠标控制软件&#xff0c;可以让用户通过手势、声音或眼睛来控制鼠标的移动和点击。MouseInc利用了人工智能和计算机视觉的技术&#…