Go语言集成Google Sheets:数据读写实战

Go语言集成Google Sheets:数据读写实战

本文详细介绍了如何在Go语言环境中高效地集成并使用Google Sheets API,实现对电子表格数据的读写操作。重点阐述了通过Google Apps Script Execution API进行交互的现代方法,涵盖了API配置、认证流程以及核心数据操作的实现细节,旨在为Go开发者提供一套完整的实践指南。

Go语言与Google Sheets交互的现代方案:Google Apps Script Execution API

随着时间的推移,go语言与google sheets的交互方式得到了显著优化。目前,google apps script execution api被认为是实现go语言与google sheets数据读写最灵活和功能最全面的方法。它允许go应用程序远程执行google apps script项目中的函数,从而间接且强大地控制google workspace服务,包括google sheets。这种方法不仅能够实现基本的读写操作,还能利用apps script的强大功能进行更复杂的业务逻辑处理,例如格式化、触发器管理或与其他google服务的集成。

您可以通过官方快速入门指南了解更多详细信息和最新进展:https://www.php.cn/link/8194758636bb0e5bab1a445835138b98

环境配置与认证流程

要开始使用Go语言通过Apps Script Execution API操作Google Sheets,需要完成以下准备工作:

1. Google Cloud Console设置

创建或选择项目:在Google Cloud Console中创建一个新项目或选择一个现有项目。启用API:搜索并启用“Google Apps Script API”。配置OAuth同意屏幕:如果您的应用需要代表用户访问数据,请配置OAuth同意屏幕。创建凭据:OAuth 2.0客户端ID:适用于需要用户授权的应用(如桌面应用、Web应用),用户会通过浏览器授权您的应用访问其Google Sheets数据。下载生成的credentials.json文件。服务账号:适用于服务器到服务器的通信,您的应用将以服务账号的身份访问Sheets。下载服务账号的JSON密钥文件。

2. Go项目准备

在您的Go项目中,需要安装Google API Go客户端库,特别是用于Apps Script的包:

go get google.golang.org/api/script/v1go get google.golang.org/api/option

3. 认证实现

认证是访问Google API的关键步骤。以下是基于OAuth 2.0的认证流程概述(服务账号认证类似,但更直接):

立即学习“go语言免费学习笔记(深入)”;

package mainimport (    "context"    "encoding/json"    "fmt"    "io/ioutil"    "log"    "net/http"    "os"    "golang.org/x/oauth2"    "golang.org/x/oauth2/google"    "google.golang.org/api/option"    "google.golang.org/api/script/v1")// 获取OAuth2配置func getConfig() (*oauth2.Config, error) {    b, err := ioutil.ReadFile("credentials.json") // 您的credentials.json文件    if err != nil {        return nil, fmt.Errorf("无法读取credentials.json文件: %v", err)    }    // 如果是Web应用,这里需要设置RedirectURL    // config, err := google.ConfigFromJSON(b, script.ScriptExternalExecuteScope)    // config.RedirectURL = "http://localhost:8080/callback"    // 桌面应用或CLI应用    config, err := google.ConfigFromJSON(b, script.ScriptExternalExecuteScope)    if err != nil {        return nil, fmt.Errorf("无法解析客户端凭据文件: %v", err)    }    return config, nil}// 获取或刷新令牌func getClient(config *oauth2.Config) *http.Client {    tokFile := "token.json" // 存储用户令牌的文件    tok, err := tokenFromFile(tokFile)    if err != nil {        tok = getTokenFromWeb(config)        saveToken(tokFile, tok)    }    return config.Client(context.Background(), tok)}// 从Web获取令牌(首次授权)func getTokenFromWeb(config *oauth2.Config) *oauth2.Token {    authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline)    fmt.Printf("请在浏览器中访问此URL进行授权: n%vn", authURL)    var authCode string    fmt.Print("输入授权码: ")    if _, err := fmt.Scan(&authCode); err != nil {        log.Fatalf("无法读取授权码: %v", err)    }    tok, err := config.Exchange(context.TODO(), authCode)    if err != nil {        log.Fatalf("无法通过授权码获取令牌: %v", err)    }    return tok}// 从文件加载令牌func tokenFromFile(file string) (*oauth2.Token, error) {    f, err := os.Open(file)    if err != nil {        return nil, err    }    defer f.Close()    tok := &oauth2.Token{}    err = json.NewDecoder(f).Decode(tok)    return tok, err}// 将令牌保存到文件func saveToken(path string, token *oauth2.Token) {    fmt.Printf("将授权令牌保存到文件: %sn", path)    f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)    if err != nil {        log.Fatalf("无法保存授权令牌到文件: %v", err)    }    defer f.Close()    json.NewEncoder(f).Encode(token)}

核心操作:通过Apps Script执行读写Google Sheets数据

由于Apps Script Execution API是用于执行Apps Script脚本的,因此实际的Sheets读写逻辑将编写在Google Apps Script中,Go程序负责调用这些脚本。

1. 编写Apps Script脚本

在Google Apps Script(通常通过访问script.google.com或从Google Sheets中“扩展”->“Apps Script”)中创建一个新项目,并编写用于读写Sheets的函数。

示例:读取数据函数 (readSheetData.gs)

function readSheetData(spreadsheetId, sheetName, range) {  try {    var ss = SpreadsheetApp.openById(spreadsheetId);    var sheet = ss.getSheetByName(sheetName);    if (!sheet) {      return { error: "Sheet not found: " + sheetName };    }    var values = sheet.getRange(range).getValues();    return { success: true, data: values };  } catch (e) {    return { error: e.message };  }}

示例:写入数据函数 (writeSheetData.gs)

function writeSheetData(spreadsheetId, sheetName, range, values) {  try {    var ss = SpreadsheetApp.openById(spreadsheetId);    var sheet = ss.getSheetByName(sheetName);    if (!sheet) {      return { error: "Sheet not found: " + sheetName };    }    // 确保values是二维数组    var dataToWrite = Array.isArray(values[0]) ? values : [values];    var targetRange = sheet.getRange(range);    if (targetRange.getNumRows() !== dataToWrite.length || targetRange.getNumColumns() !== dataToWrite[0].length) {        // 如果写入范围与数据维度不匹配,可能需要调整或报错        // 这里简化处理,直接设置值,如果范围过大/小,Apps Script会自动处理        // 更严谨的做法是先获取目标范围的行/列数,再判断        // 或者使用 appendRow/appendRows    }    targetRange.setValues(dataToWrite);    return { success: true, message: "Data written successfully." };  } catch (e) {    return { error: e.message };  }}

部署Apps Script项目:

在Apps Script编辑器中,点击“部署” -> “新建部署”。选择部署类型为“API可执行文件”。复制生成的脚本ID,这在Go程序中会用到。

2. Go语言调用Apps Script函数

在Go应用程序中,我们将使用script.Service来调用Apps Script中定义的函数。

package mainimport (    "context"    "fmt"    "log"    "net/http"    "google.golang.org/api/option"    "google.golang.org/api/script/v1")// ... (getClient, getConfig等认证函数,如上所示)func main() {    ctx := context.Background()    config, err := getConfig()    if err != nil {        log.Fatalf("无法获取OAuth配置: %v", err)    }    client := getClient(config)    srv, err := script.NewService(ctx, option.WithHTTPClient(client))    if err != nil {        log.Fatalf("无法初始化Apps Script服务: %v", err)    }    // 替换为您的Apps Script项目的部署ID    scriptID := "YOUR_APPS_SCRIPT_DEPLOYMENT_ID" // 例如:AKfycbyf...    // --- 示例:调用Apps Script函数读取数据 ---    spreadsheetID := "YOUR_SPREADSHEET_ID" // 您的Google Sheets文档ID    sheetName := "Sheet1"    readRange := "A1:C5"    readRequest := &script.RunRequest{        Function: "readSheetData", // Apps Script中定义的函数名        Parameters: []interface{}{            spreadsheetID,            sheetName,            readRange,        },    }    readResponse, err := srv.Scripts.Run(scriptID, readRequest).Do()    if err != nil {        log.Fatalf("执行Apps Script读取函数失败: %v", err)    }    if readResponse.Error != nil {        log.Fatalf("Apps Script执行返回错误: %v", readResponse.Error.Details)    }    if readResponse.Response != nil && readResponse.Response.Result != nil {        // 结果通常是map[string]interface{}类型,需要根据Apps Script返回的结构进行断言        resultMap, ok := readResponse.Response.Result.(map[string]interface{})        if !ok {            log.Printf("Apps Script返回结果非预期类型: %T", readResponse.Response.Result)        } else {            if success, found := resultMap["success"].(bool); found && success {                if data, dataFound := resultMap["data"].([]interface{}); dataFound {                    fmt.Println("读取到的数据:")                    for _, row := range data {                        fmt.Println(row)                    }                }            } else if errMsg, errFound := resultMap["error"].(string); errFound {                fmt.Printf("Apps Script执行失败: %sn", errMsg)            }        }    }    // --- 示例:调用Apps Script函数写入数据 ---    writeRange := "A6"    valuesToWrite := [][]interface{}{        {"New Data 1", "New Data 2", "New Data 3"},        {"Row 2 Col 1", "Row 2 Col 2", "Row 2 Col 3"},    }    writeRequest := &script.RunRequest{        Function: "writeSheetData", // Apps Script中定义的函数名        Parameters: []interface{}{            spreadsheetID,            sheetName,            writeRange,            valuesToWrite,        },    }    writeResponse, err := srv.Scripts.Run(scriptID, writeRequest).Do()    if err != nil {        log.Fatalf("执行Apps Script写入函数失败: %v", err)    }    if writeResponse.Error != nil {        log.Fatalf("Apps Script执行返回错误: %v", writeResponse.Error.Details)    }    if writeResponse.Response != nil && writeResponse.Response.Result != nil {        resultMap, ok := writeResponse.Response.Result.(map[string]interface{})        if !ok {            log.Printf("Apps Script返回结果非预期类型: %T", writeResponse.Response.Result)        } else {            if success, found := resultMap["success"].(bool); found && success {                fmt.Printf("写入操作成功: %sn", resultMap["message"])            } else if errMsg, errFound := resultMap["error"].(string); errFound {                fmt.Printf("Apps Script写入失败: %sn", errMsg)            }        }    }}

注意事项与最佳实践

权限管理:确保您的Apps Script项目拥有访问Google Sheets的必要权限。在Apps Script编辑器中,查看“项目设置”->“Cloud Platform项目”和“概览”->“项目属性”来管理权限。当您首次运行包含Sheets操作的Apps Script时,系统会提示您授权。错误处理:Go应用程序和Apps Script脚本都应包含健壮的错误处理机制。在Go端,检查script.RunResponse中的Error字段;在Apps Script端,使用try-catch块捕获异常并返回有意义的错误信息。脚本ID管理:将Apps Script的部署ID作为配置项,而不是硬编码在Go代码中,以便于管理和更新。性能考量:频繁地调用Apps Script可能会导致性能开销。如果需要进行大量的小型操作,考虑在Apps Script中编写一个函数来批量处理数据,然后Go程序一次性调用该批量处理函数。安全性:妥善保管您的credentials.json和token.json文件,不要将其提交到版本控制系统。在生产环境中,应使用更安全的凭据管理方式,例如环境变量或Google Secret Manager。Apps Script版本控制:Apps Script项目可以有多个部署版本。在Go代码中,您通常会指定一个特定的部署ID来确保调用的是稳定版本。

总结

通过Google Apps Script Execution API,Go语言开发者可以获得与Google Sheets进行深度交互的能力。这种方法结合了Go语言的强大并发处理能力和Google Apps Script对Google Workspace服务的原生支持,提供了一个灵活、可扩展且功能丰富的解决方案。掌握这种集成方式,将使您能够构建出更加智能和自动化的Go语言应用程序,有效管理和利用Google Sheets中的数据。

以上就是Go语言集成Google Sheets:数据读写实战的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1405582.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Golang动态创建结构体对象示例
上一篇 2025年12月15日 21:30:41
Golang处理JSON解析错误与异常捕获
下一篇 2025年12月15日 21:30:53

相关推荐

  • 支付宝双十一花呗临时额度怎么开通_支付宝11.11花呗临时额度开通

    支付宝双十一花呗临时额度怎么开通_支付宝11.11花呗临时额度开通支付宝双十一花呗临时额度怎么开通_支付宝11.11花呗临时额度开通支付宝双十一花呗临时额度怎么开通_支付宝11.11花呗临时额度开通支付宝双十一花呗临时额度怎么开通_支付宝11.11花呗临时额度开通

    支付宝双十一期间可通过参与“马上提额”活动、领取限时额度券、完成信用任务或转入余额宝资金四种方式提升花呗临时额度,具体操作包括点击翻倍按钮、领取系统发放的额度券、提交公积金社保记录等材料审核通过后获取提额资格。 如果您在备战双十一购物节时发现花呗额度不足,支付宝通常会推出限时活动为用户提供花呗临时额…

    2026年9月28日 • 用户投稿
    100
  • VSCode如何集成Git版本控制 VSCode中Git操作的便捷技巧

    首先确认git已安装并配置好用户名和邮箱;2. vscode通常自动检测git,若未检测到可手动在设置中指定git.path;3. 在vscode中打开项目并使用内置终端运行git init初始化仓库;4. 通过左侧源代码管理图标暂存、提交和推送更改;5. 遇到提交乱码时将files.encodin…

    2026年9月28日
    200
  • 和豆包一样的ai图片生成工具2025推荐top10

    2025年AI图片生成工具选择多样,boardmix因支持文生图、图生图、AI抠图、多种风格及在线协作,适合初学者与团队使用,且提供免费版,成为易用性高、功能全面的优选之一。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 2025年,想找个…

    2026年9月28日
    000
  • 拼多多官网入口直接打开 拼多多网页版不用登录

    拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录

    拼多多官网可通过浏览器直接访问https://www.pinduoduo.com,无需下载App即可浏览商品,支持扫码登录、拼团购物、限时秒杀及百亿补贴活动,网页版界面简洁,分类清晰,具备关键词搜索与筛选功能,未登录也可查看商品详情,便于比价;平台覆盖多品类商品,设有专题推荐,提升选购效率,且网页端…

    2026年9月28日 • 用户投稿
    000
  • 豆瓣APP怎么看小组里自己的帖子_小组内个人发帖查找方法

    豆瓣APP怎么看小组里自己的帖子_小组内个人发帖查找方法豆瓣APP怎么看小组里自己的帖子_小组内个人发帖查找方法豆瓣APP怎么看小组里自己的帖子_小组内个人发帖查找方法豆瓣APP怎么看小组里自己的帖子_小组内个人发帖查找方法

    通过个人主页动态可直接查看按时间倒序排列的小组发帖与回复;2. 在小组内使用搜索功能输入用户名或关键词筛选个人发帖;3. 借助爱豆搜等外部工具输入ID和关键词高效检索历史帖子。 如果您在豆瓣小组中发布了多个帖子,但无法快速找到自己之前的发言记录,可能是因为缺少直接的“我的帖子”聚合功能。以下是几种在…

    2026年9月28日 • 用户投稿
    000
  • 夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法

    夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法

    首先确认是否启用表格识别模式,打开夸克App进入扫描界面,选择历史记录中的表格图片,点击“重新识别”并选用“表格识别”模式,完成后导出为Excel;若效果不佳,可将图片保存至相册后使用Microsoft Lens等OCR工具提取表格并导出.xlsx文件;还可通过浏览器桌面模式登录夸克账号,利用电脑端…

    2026年9月28日 • 用户投稿
    000
  • Android RecyclerView优化:通过DiffUtil实现增量更新

    Android RecyclerView优化:通过DiffUtil实现增量更新Android RecyclerView优化:通过DiffUtil实现增量更新Android RecyclerView优化:通过DiffUtil实现增量更新Android RecyclerView优化:通过DiffUtil实现增量更新

    本教程旨在解决RecyclerView在数据更新时(尤其是新增数据)出现的全量刷新和闪烁问题。通过详细介绍Android DiffUtil机制,我们将学习如何高效地进行列表项的增量更新,从而提升用户体验,避免不必要的UI重绘,特别适用于实时聊天等频繁数据变动的场景。 在开发Android应用时,Re…

    2026年9月28日 • 用户投稿
    100
  • 方正证券APP怎么卖出股票_方正证券APP股票卖出操作指南

    方正证券APP怎么卖出股票_方正证券APP股票卖出操作指南方正证券APP怎么卖出股票_方正证券APP股票卖出操作指南方正证券APP怎么卖出股票_方正证券APP股票卖出操作指南方正证券APP怎么卖出股票_方正证券APP股票卖出操作指南

    首先登录方正证券APP,进入交易页面找到持仓股票,点击卖出并输入数量和价格(可选限价或市价委托),确认信息后提交订单,资金T+1日可提现。 在方正证券APP上卖出股票,操作简单直接。打开APP登录账户后,找到持有的股票,输入想卖的数量和价格,确认信息无误提交即可。整个过程几分钟就能完成,关键是注意交…

    2026年9月28日 • 用户投稿
    000
  • sublime怎么配置clangd进行c++代码补全_Clangd插件C++环境配置

    sublime怎么配置clangd进行c++代码补全_Clangd插件C++环境配置sublime怎么配置clangd进行c++代码补全_Clangd插件C++环境配置sublime怎么配置clangd进行c++代码补全_Clangd插件C++环境配置sublime怎么配置clangd进行c++代码补全_Clangd插件C++环境配置

    配置Clangd实现C++智能补全,需安装LSP插件和Clangd服务器,并通过compile_commands.json告知编译信息,从而获得语义级代码补全、实时诊断与重构支持,显著提升Sublime Text的C++开发体验。 在Sublime Text里配置Clangd来搞定C++代码补全,说…

    2026年9月28日 • 用户投稿
    000
  • Win7资源管理器总是提示已停止工作的解决方法

    Win7资源管理器总是提示已停止工作的解决方法Win7资源管理器总是提示已停止工作的解决方法Win7资源管理器总是提示已停止工作的解决方法Win7资源管理器总是提示已停止工作的解决方法

    使用电脑过程中难免会遇到各种问题,近期有不少win7用户向小编反映,在操作电脑时频繁出现“windows资源管理器已停止工作”的提示。这种情况通常由误操作或某些恶意软件、病毒篡改系统设置所引起。那么应该如何有效解决这一故障呢?接下来,黑鲨小编将为大家详细介绍win7系统中资源管理器频繁崩溃的应对方法…

    2026年9月28日 • 用户投稿
    000
  • 豆包AI安装需要哪些运行时库 豆包AI系统依赖项完整清单

    豆包AI安装需要哪些运行时库 豆包AI系统依赖项完整清单豆包AI安装需要哪些运行时库 豆包AI系统依赖项完整清单豆包AI安装需要哪些运行时库 豆包AI系统依赖项完整清单豆包AI安装需要哪些运行时库 豆包AI系统依赖项完整清单

    #%#$#%@%@%$#%$#%#%#$%@_b05121b5eff2c++ee27d5b7d6a4dd8f2af运行需要python 3.8+、numpy、pandas、requests、torch/tensorflow、transformers、gradio/streamlit等核心库;操作系统…

    2026年9月28日 • 用户投稿
    100
  • 将Java或Groovy中的字符串转换为JSON对象

    将Java或Groovy中的字符串转换为JSON对象将Java或Groovy中的字符串转换为JSON对象将Java或Groovy中的字符串转换为JSON对象将Java或Groovy中的字符串转换为JSON对象

    将Java或Groovy中的字符串转换为JSON对象,需要根据实际情况进行分析。如果字符串是标准的JSON格式,可以直接使用JSON解析库进行转换。但如果字符串不是标准的JSON格式,则需要自定义解析器。 理解JSON格式 首先,我们需要明确标准的JSON格式。一个JSON对象是由键值对组成的,键和…

    2026年9月28日 • 用户投稿
    000
  • 免费漫画在线观看网站 – 2025年漫画平台推荐合集

    免费漫画在线观看网站 – 2025年漫画平台推荐合集免费漫画在线观看网站 – 2025年漫画平台推荐合集免费漫画在线观看网站 – 2025年漫画平台推荐合集免费漫画在线观看网站 – 2025年漫画平台推荐合集

    2025年主流免费漫画平台如快看漫画、哔哩哔哩漫画等资源丰富,覆盖国漫、日漫、韩漫,更新快且阅读体验佳,部分支持离线缓存与社区互动,适合多场景追漫。 小编推荐一、☞☞☞☞点击免费漫画在线观看网站汇总☜☜☜☜☜ 小编推荐二、☞☞☞☞点击2025年漫画平台推荐合集☜☜☜☜☜ 想找免费看漫画的地方,关键是…

    2026年9月28日 • 用户投稿
    000
  • 高德地图导航途中退出怎么办

    高德地图导航途中退出怎么办高德地图导航途中退出怎么办高德地图导航途中退出怎么办高德地图导航途中退出怎么办

    双击Home键或上滑进入多任务界面点击高德地图预览窗口即可恢复;2. 从通知栏下滑找到“正在导航”通知直接跳转;3. 若已关闭应用,重启后点击“继续导航”提示或“上次导航”入口恢复;4. 建议开启导航锁定、使用车载支架避免误触。 高德地图导航途中不小心退出了,不用担心,有几种方法可以快速恢复导航。 …

    2026年9月28日 • 用户投稿
    100
  • sublime代码提示不出来怎么办_解决Sublime代码自动补全失效问题

    sublime代码提示不出来怎么办_解决Sublime代码自动补全失效问题sublime代码提示不出来怎么办_解决Sublime代码自动补全失效问题sublime代码提示不出来怎么办_解决Sublime代码自动补全失效问题sublime代码提示不出来怎么办_解决Sublime代码自动补全失效问题

    代码提示失效多因插件未安装、语法识别错误或auto_complete被关闭。检查设置中是否启用auto_complete,安装Emmet、Anaconda等语言插件,确认文件语法正确,必要时清除缓存重建索引,可恢复补全功能。 Sublime Text 代码提示(自动补全)失效是不少用户在开发过程中遇…

    2026年9月28日 • 用户投稿
    400
  • 多模态AI可以生成视频吗 视频创作能力实测

    多模态AI可以生成视频吗 视频创作能力实测多模态AI可以生成视频吗 视频创作能力实测多模态AI可以生成视频吗 视频创作能力实测多模态AI可以生成视频吗 视频创作能力实测

    多模态ai确实能生成视频,但目前主要限于几秒到十几秒的短片段。其常见方式包括:1. 文本驱动生成,如输入描述生成森林日出画面;2. 图像扩展成视频,让静态图动态化;3. 图文混合引导生成更精准视频序列。当前生成视频存在长度有限、帧间不连贯、画质不稳定等问题,但适合社交媒体、创意样片等场景。建议创作者…

    2026年9月28日 • 用户投稿
    000
  • 数智融合驱动新质生产力,欧姆龙自动化亮相2025工博会

    数智融合驱动新质生产力,欧姆龙自动化亮相2025工博会数智融合驱动新质生产力,欧姆龙自动化亮相2025工博会数智融合驱动新质生产力,欧姆龙自动化亮相2025工博会数智融合驱动新质生产力,欧姆龙自动化亮相2025工博会

    作为全球自动化领域的数字化转型领军企业,欧姆龙自动化(中国)有限公司(以下简称“欧姆龙”)在第25届中国国际工业博览会精彩亮相。本次展会,欧姆龙精心打造了智能革新应用、数字驱动未来、强大产品矩阵三大主题展区,集中呈现多项契合现代制造业发展趋势的创新解决方案,为观众带来一场融合科技与智慧的智能制造盛宴…

    2026年9月28日 • 用户投稿
    500
  • 如何在Java中使用循环直到输入特定字符串?

    如何在Java中使用循环直到输入特定字符串?如何在Java中使用循环直到输入特定字符串?如何在Java中使用循环直到输入特定字符串?如何在Java中使用循环直到输入特定字符串?

    本文将解释如何在Java中使用while循环接收用户输入,并根据特定字符串(例如 “quit”)来终止循环。文章将解释为什么不能使用 == 运算符比较字符串,并提供使用 equals() 方法的正确示例,确保循环在用户输入特定字符串时正常退出。 在Java中,控制循环的执行直…

    2026年9月28日 • 用户投稿
    000
  • 解锁AppleID(掌握AppleID解锁方法)

    解锁AppleID(掌握AppleID解锁方法)解锁AppleID(掌握AppleID解锁方法)解锁AppleID(掌握AppleID解锁方法)解锁AppleID(掌握AppleID解锁方法)

    appleid是苹果公司为用户提供的一个统一账户,用于在各种苹果设备上登录并享受各种服务。然而,由于各种原因,有时用户可能会遇到无法访问或解锁其appleid账户的问题。本文将为您介绍几种常见的方法,帮助您解锁appleid并恢复账户的访问权限。 法语写作助手 法语助手旗下的AI智能写作平台,支持语…

    2026年9月28日 • 用户投稿
    100
  • 如何在Jupyter中运行AI代码 Jupyter Notebook环境配置要点

    如何在Jupyter中运行AI代码 Jupyter Notebook环境配置要点如何在Jupyter中运行AI代码 Jupyter Notebook环境配置要点如何在Jupyter中运行AI代码 Jupyter Notebook环境配置要点如何在Jupyter中运行AI代码 Jupyter Notebook环境配置要点

    在jupyter notebook中运行ai代码的关键在于正确配置环境。1. 安装python 3.8+和pip,并通过命令行验证安装;2. 使用虚拟环境隔离项目依赖,激活后安装ai库如torch、tensorflow;3. 安装并启动jupyter notebook,必要时手动添加内核以确保其使用…

    2026年9月28日 • 用户投稿
    400

发表回复

登录后才能评论
关注微信