(二)Go----基础知识(包管理,输出,输入,注释,命名,ASCII码,基本元素)

1.包管理 (调用)

介绍

  1. 一个文件夹可以成为一个包
  2. 在文件夹(包)中可以创建多个文件夹
  3. 在 同一个包下的每一个文件中必须指定包名称且相同
  4. 同一个包中,包名相同,可直接调用其他文件中的功能

分类

  1. main包,必须写一个main函数,此函数就是项目的入口(main主函数)。编译生成的就是一个可执行文件
  2. 非main包,用来将代码 分类,方便查找
    注意:功能必须首字母大写
    如果是小写开头,则不能被其他所调用

调用包(在同一个级别)

在这里插入图片描述
然后运行,发现只build文件app1没有编译app2

  1. 手动执行go install

  2. 修改配置:让其直接可编译一个文件夹里面的内容
    在这里插入图片描述
    在这里插入图片描述
    结果
    在这里插入图片描述

不同级别

导入包----->也就是文件所在位置
在这里插入图片描述
调用功能
在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在项目根目录执行go mod init生成go,mod文件

最后运行整个项目就可以

2 . 输出print

内置函数

不确定高版本会支持

  1. print 不换行
  2. println

fmt 包 (推荐)

  1. fmt.Printf 不换行,可以转义特殊字符
    需要格式化输出并带输出格式,可以打印出字符串,和变量

    Printf : 只可以打印出格式化的字符串,可以输出字符串类型的变量,不可以输出整形变量和整形

var a int=1
fmt.Printf("%d,%s",a,"abc")
  1. fmt.Println
    println会根据你输入格式原样输出
fmt.Println("hello","world","nice")
结果:中间有空格
hello  woeld nice

也就是说,当需要格式化输出信息时一般选择 Printf,其他时候用 Println 就可以了

3. 输入 fmt.Scan

fmt.Scan
fmt.Scanln
fmt.Scanf
  1. 用指针,也就是会用到内存地址
  2. &为指针,指向的地址
  3. 类型要匹配,所有类型都可以
  4. switch可以用于判断interface变量实际存储的变量类型。
var name string
fmt.Scan(&name)

在这里插入图片描述
特别说明:fmt.Scan 要求输入两个值,必须输入两个,否则他会一直等待。

    var name string
    var age int
    fmt.Println("请输入用户名:")
    // 当使用Scan时,会提示用户输入
    // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息
    _, err := fmt.Scan(&name, &age)
    if err == nil {
        fmt.Println(name, age)
    } else {
        fmt.Println("用户输入数据错误", err)
    }
   

特别说明:fmt.Scanln 等待回车

	var name string
    var age int
    fmt.Print("请输入用户名:")
    // 当使用Scanln时,会提示用户输入
    // 用户输入完成之后,会得到两个值:count,用户输入了几个值;err,用输入错误则是错误信息
    count, err := fmt.Scanln(&name, &age)
    fmt.Println(count, err)
    fmt.Println(name, age)

fmt.Scanf支持特殊字符

	var name string
    var age int
    fmt.Print("请输入用户名:")
    _, _ = fmt.Scanf("我叫%s 今年%d 岁", &name, &age)
    fmt.Println(name, age)

读取整整一行

当使用ftm.Scan等功能时,如果输入一整行且期间存在空格,则无法获取整行。
想要读取一行数据,这个功能可以基于标准输入来进行实现。

package main
import (
    "bufio"
    "fmt"
    "os"
)
func main() {
    reader := bufio.NewReader(os.Stdin)
    // line,从stdin中读取一行的数据(字节集合 -> 转化成为字符串)
    // reader默认一次能4096个字节(4096/3)
    // 1. 一次性读完,isPrefix=false
    // 2. 先读一部分,isPrefix=true,再去读取isPrefix=false
    line, _, _ := reader.ReadLine()
    data := string(line)
    fmt.Println(data)
}

3. 注释

// 只能注释一行
/*
	可以注释多行
*/

4. Go语言命名规则

在这里插入图片描述

5. ASCII码

在这里插入图片描述
在这里插入图片描述

6. 基本元素

在这里插入图片描述
25个关键字
在这里插入图片描述

字面量

在这里插入图片描述

操作符匀运算符

在这里插入图片描述

声明

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,TF-IWF算法是一种文本特征提取算法,可以用于文本分类等任务。下面是一个用Python实现的TF-IWF算法,满足输入输出明确,注释清晰的要求。 ```python import numpy as np from sklearn.feature_extraction.text import CountVectorizer class TFIWF: def __init__(self): self.vectorizer = CountVectorizer() self.vocab = None self.idf = None def fit_transform(self, documents): """ 对文档进行特征提取,计算TF-IWF值 :param documents: list,文档列表 :return: tf_iwf: numpy.ndarray,TF-IWF特征矩阵 """ # 将文档转化为稀疏矩阵 count_matrix = self.vectorizer.fit_transform(documents) # 获取词表 self.vocab = self.vectorizer.get_feature_names() # 计算文档频率 df = np.array(np.sum(count_matrix > 0, axis=0))[0] # 计算逆文档频率 self.idf = np.log((len(documents) + 1) / (df + 1)) + 1 # 计算TF tf = np.array(count_matrix.todense()) tf = tf / np.sum(tf, axis=1, keepdims=True) # 计算TF-IWF tf_iwf = tf * self.idf return tf_iwf ``` 使用示例: ```python # 创建TF-IWF对象 tf_iwf = TFIWF() # 文档列表 documents = ['this is a test', 'this is another test'] # 特征提取并计算TF-IWF值 tf_iwf_matrix = tf_iwf.fit_transform(documents) print(tf_iwf_matrix) ``` 输出结果: ``` [[0. 0. 0. 0. 0.69314718 0. 0. 0. 0.69314718 0.69314718] [0. 0. 0. 0. 0.69314718 0. 0. 0. 0.69314718 0.69314718]] ``` 其中,矩阵的每一行代表一个文档,每一列代表一个词汇,数值为该词汇在文档中的TF-IWF值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值