首页 > 其他分享 >golang flag的使用

golang flag的使用

时间:2023-10-31 09:55:54浏览次数:28  
标签:outputFile companyId courseId sql golang flag 使用 inputFile

package main

import (
	"backend-service-api-scripts/utils"
	"database/sql"
	"flag"
	"fmt"
	"log"
	"os"
)

var (
	db         *sql.DB = utils.ConnectData() // 这里的连接数据库需要根据数据库本身的情况进行更改
	courseId   int
	companyId  int
	outputFile string
	inputFile  string
	h          bool
)

func init() {
	flag.BoolVar(&h, "h", false, "帮助")
	flag.IntVar(&courseId, "c", 0, "(必传值)课程ID:\n\tA课:111\n\tB课:222\n\tC课:333")
	flag.IntVar(&companyId, "C", 0, "(必传值)企业ID")
	flag.StringVar(&inputFile, "i", "inputFile.txt", "需要查询的电话列表文件")
	flag.StringVar(&outputFile, "o", "outputFile.txt", "查询电话对应的班级号文件")

	flag.Usage = usage
}

func usage() {
	fmt.Fprintf(os.Stderr, `View class number by phone
Usage: viewClassNumber [-c courseId] [-C companyId] [-i inputFile] [-o outputFile]
Options:
`)
	flag.PrintDefaults()
}

type UserClassesInfo struct {
	ClasseNo sql.NullString
}

func getUserGroupId(phoneList <-chan string, courseId, companyId int) {
	for {
		phone, ok := <-phoneList
		if !ok {
			break
		}
		row := db.QueryRow("SELECT classes_no FROM classes.classes_info WHERE phone=? AND course_id=? AND company_id=?", phone, courseId, companyId)
		u := UserClassesInfo{}
		if err := row.Scan(&u.ClasseNo); err != nil {
			log.Println(err)
		}
		info := fmt.Sprintf("%v\t%v\n", phone, u.ClasseNo.String)
		utils.WriteFile(outputFile, &info)
	}
}

func main() {
	flag.Parse()
	if h || companyId == 0 || courseId == 0 {
		flag.Usage()
		return
	}
	phoneList := make(chan string, 500)
	utils.ReadFile(inputFile, phoneList)
	getUserGroupId(phoneList, courseId, companyId)
}

标签:outputFile,companyId,courseId,sql,golang,flag,使用,inputFile
From: https://www.cnblogs.com/cqblog/p/17799591.html

相关文章

  • (原创)安卓快速使用简单的RecyclerView
    原创声明:本文所有图片和代码皆由本人制作和编写。目录前言目标与效果3步走第一:在布局文件添加RecyclerView组件第二:创建适配器为适配器提供每一个小条目的布局为适配器提供要显示的内容数据在适配器里完成事件监听器第三:把第一步的布局里的RecyclerView组件和第二步的适配器关联......
  • 新手使用nodejs的SerialPort获取数据时需要注意的一个小点
    onData(callback:(data:Buffer)=>void):void{if(this.serialPort!=null){this.serialPort.on("data",(data:Buffer)=>{callback(data);})}}​ 上面的代码相当于当串口接收到数据之后就通知......
  • R语言非参数方法:使用核方法和K-NN(k近邻算法)分类预测心脏病数据|附代码数据
    原文链接: http://tecdat.cn/?p=22181 原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于非参数方法的研究报告,包括一些图形和统计输出。本文考虑一下基于核方法进行分类预测。注意,在这里,我们不使用标准逻辑回归,它是参数模型。非参数方法用于函数估计的非参数方法大......
  • 【Redis使用】一年多来redis使用markdow笔记总结,第(1)篇:Redis命令详解
    Redis是一个高性能的key-value数据库。本文会让你知道:什么是nosql、Redis的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中list保存的数据类型、使用StrictRedis对象对string类型数据......
  • 使用async/await与forEach循环结合
    内容来自DOChttps://q.houxu6.top/?s=使用async/await与forEach循环结合在forEach循环中使用async/await是否有问题?我试图遍历一个文件数组,并对每个文件的内容使用await。importfsfrom'fs-promise'asyncfunctionprintFiles(){constfiles=awaitgetFilePaths()......
  • 使用【注解】加【拦截器】实现权限控制
    前面介绍了使用SpringSecurity进行权限控制,其中一个非常方便的特点就是:可以在类和方法上使用注解,从而实现对资源访问的权限控制。但是SpringSecurity具有一定的学习成本和复杂度,想要灵活驾驭并用好框架并非一件容易的事情,比如跟其它系统进行单点登录集成等等。本篇博客介绍......
  • 打印空心金字塔_Golang实现
    *******......
  • 我应该在MySQL中使用datetime还是timestamp数据类型?
    内容来自DOChttps://q.houxu6.top/?s=我应该在MySQL中使用datetime还是timestamp数据类型?你推荐使用datetime还是timestamp字段,为什么(使用MySQL)?我正在服务器端使用PHP。在MySQL中,时间戳通常用于跟踪记录的更改,并且每次更改记录时通常都会更新。如果您想存储特定值,则应使用......
  • 重新使用android studio编写udp socket程序,备忘记录
    1,建立socket需要使用子线程而不是主线程。2,java/android使用数据报格式。3,可以利用python作为socket的客户/服务器端,非常简单。但python可以不使用数据报,而直接使用字符串。当然也可以使用数据报。当与android配合时使用数据报格式4,一般地,传输的是字符串,因此,数字要编码为字符串......
  • ansible安装与基本使用
    【0】需求构造一个control服务器,5个节点服务器node1~node5使用ansible来控制分发命令。【1】ansible(1.1)基本介绍概念:ansible是自动化运维利器,可以通过一台服务器远程批量控制其他服务器。工作原理:ssh密钥认证免密登录,一次配置,永久使用。控制主机control=====》......