{"id":95218,"date":"2020-11-12T15:15:08","date_gmt":"2020-11-12T14:15:08","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=go&#038;p=95218"},"modified":"2020-12-03T16:10:05","modified_gmt":"2020-12-03T15:10:05","slug":"goland-2020-3-goes-beta","status":"publish","type":"go","link":"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta","title":{"rendered":"GoLand 2020.3 Goes Beta!"},"content":{"rendered":"<p>GoLand 2020.3 Beta is out! :collision:<\/p>\n<p>The Beta is quite stable in comparison to the Early Access Program builds, but please keep in mind that there may still be some rough edges here and there.<\/p>\n<p>The Beta build is usually the last build in the EAP cycle that does not require a subscription to use (if you are using the EAP builds to test out GoLand).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/blog-2x-7.png\" alt=\"\" \/><\/p>\n<p>The upcoming GoLand 2020.3 debugger and testing features have received some special attention. You can explore the <strong>goroutines goroutines dump<\/strong>, and stop a debug session using a Go<em> Remote<\/em> configuration. On the subject of testing, we\u2019ve added support for <strong>table tests<\/strong> and expanded support for the <strong>Testify<\/strong> test framework. On top of that, you will find many new code editing features, including support for <strong>time package<\/strong>, smarter ways to handle packages, UI improvements, as well as many new features for web development and working with databases, and a new service from JetBrains for <strong>collaborative development<\/strong> and pair programming.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/go\/nextversion\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Download GoLand 2020.3 BETA<\/a><\/p>\n<p>If you want to get an interactive introduction to the new features, the new <em>What\u2019s New in GoLand 2020.3<\/em> course is already available for you on the <em>Welcome<\/em> screen in the <em>Learn IDE<\/em> tab. But please note that not all the features are available there yet. <\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#debugger\">Debugger<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#testing\">Testing<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#code-inspections\">Code inspections<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#code-editing\">Code editing<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#code-with-me\">Code With Me<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#ui-improvements\">UI improvements<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#vcs-updates\">VCS updates<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#more-features \">More features <\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#web-development-changes\">Web development changes<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/go\/2020\/11\/12\/goland-2020-3-goes-beta#work-with-databases\">Work with databases<\/a><\/li>\n<\/ul>\n<h2 id=\"debugger\"><strong>Debugger <\/strong><\/h2>\n<p>The new <em>Dump Goroutines<\/em> icon in the debugger lets you easily find goroutines that contain a specified string in the stack during the debug session. Simply click the icon to open a dump in a separate window. <\/p>\n<p>To help you keep focus on information that matters there is the option to hide an individual goroutine or goroutines with the same stack. Right-click on a goroutine and select the desired action or just press delete to move it to a special <em>Hidden<\/em> section in the dump window where it won\u2019t distract you.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/dump-goroutines.gif\" alt=\"\" \/><\/p>\n<p>Another enhancement made to the debugger in this release is the ability to stop a process with <em>Go Remote<\/em> configuration if no reattach is required. In your configuration settings you can specify the default behavior of the debugger on disconnect, you can choose <em>Stop remote Delve processes<\/em>, <em>Leave it running<\/em>, or have GoLand ask you how to proceed each time.  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/remote_debug_kill_process.gif\" alt=\"\" \/><\/p>\n<h2 id=\"testing\"><strong>Testing<\/strong><\/h2>\n<h3 id=\"support_for_table_tests\">Support for table tests <\/h3>\n<p>You can run and navigate to individual table tests from the <em>Run<\/em> tool window.<\/p>\n<p>There are some limitations:<\/p>\n<ul>\n<li>\nThe test data variable must be a slice, an array, or a map. It must be defined in the same function as the call and must not be touched after initialization (except for range clauses in a for loop).\n<\/li>\n<li>\nThe individual test data entry must be a struct literal. Loop variables used in a subtest name expression must not be touched before the call.\n<\/li>\n<li>\nA subtest name expression can be a string field in the test data, a concatenation of test data string fields, and an <code>fmt.Sprintf()<\/code> call with <code>%s<\/code> and <code>%d<\/code> verbs.\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/table-tests-support.gif\" alt=\"\" \/><\/p>\n<h3 id=\"expanded_support_for_testify\">Expanded support for Testify<\/h3>\n<p>The IDE now recognizes the test function that starts a test suite, and provides a way to start an individual <code>suite.Run<\/code> and <code>suite.T().Run<\/code>, as long as the subtest name is a string constant. In addition, it is possible to rerun a subtest from the <em>Run<\/em> tool window to avoid rerunning the entire top-level test. <\/p>\n<p>GoLand can now run Testify suites with the same method name separately within a single test case. <\/p>\n<p>Last but not least, when you complete a function or method that accepts <code>testing.T<\/code> as the first argument, GoLand passes that argument automatically if possible. This works for functions and methods of <code>testify\/assert<\/code>, <code>testify\/require<\/code>, <code>testify\/mock<\/code>, and <code>testify\/suite<\/code> packages. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/testify-code-completion.gif\" alt=\"\" \/><\/p>\n<h2 id=\"code_inspections\"><strong>Code inspections <\/strong><\/h2>\n<p>The <em>Incorrect usage of Println\/Printf like functions<\/em> code inspection will warn you about potential problems in <em>github.com\/pkg\/errors<\/em>, <em>github.com\/sirupsen\/logrus<\/em>, and<em> go.uber.org\/zap<\/em> packages. On top of that, we\u2019ve added placeholder highlighting and folding, as well as the <em>Add format string argument<\/em> intention.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/add-format-string-argument-upgrades.png\" alt=\"\" \/><\/p>\n<p>The <em>context.CancelFunc not called<\/em> code inspection reports potentially unsafe uses of context cancellation. This is especially useful when the \u2018cancel\u2019 function returned by <code>context.WithCancel<\/code> (and similar functions) isn\u2019t called on all execution paths. To learn more about this package please visit: <a href=\"https:\/\/golang.org\/pkg\/context\/\" target=\"_blank\" rel=\"noopener\">https:\/\/golang.org\/pkg\/context\/<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/code-inspection-cancel-function.png\" alt=\"\" \/><\/p>\n<h2 id=\"code_editing\"><strong>Code editing <\/strong><\/h2>\n<h3 id=\"support_for_time_package\">Support for time package <\/h3>\n<p>We\u2019ve added support for the <a href=\"https:\/\/golang.org\/pkg\/time\/\" target=\"_blank\" rel=\"noopener\">time package<\/a> so you can work with time and duration more easily. GoLand will suggest elements of predefined layout via code completion(<em>\u2303Space<\/em> on macOS and <em>Ctrl+Space<\/em> on Windows\/Linux) as YYYY, MM, DD placeholders from ISO-8601. <\/p>\n<p>Press <em>\u2318+P<\/em> on macOS or <em>Ctrl+P<\/em> on Windows\/Linux on a token, and the IDE will show its meaning. There is also syntax highlighting for layout tokens. Code completion also suggests standard time layouts outside of the string literal.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/go-time-support.gif\" alt=\"\" \/><\/p>\n<h3 id=\"smarter_package_handling\">Smarter package handling <\/h3>\n<p>The IDE is now smarter at prioritizing completion items for packages that you use frequently and that are explicitly declared in the go.mod file of your project. We\u2019ve also added an option to exclude packages completely from your project import path and completion suggestions. You can do this via <em>Alt+Enter<\/em> or in the new <em>Exclude for import and completion<\/em> window in <em>Settings\/Preferences| Preferences | Go | Imports. <\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/exclude-imports-from-import-dialog-optimized.gif\" alt=\"\" \/><\/p>\n<h3 id=\"support_for_variable_shadowing\">Support for variable shadowing<\/h3>\n<p>GoLand makes it easier to spot variable shadowing: <\/p>\n<ul>\n<li>\nThe IDE shows variables that shadow any existing declaration in a different colour now.\n<\/li>\n<li>\n<em>Navigate to shadowing declaration<\/em> intention action lets you immediately switch to the shadowed declaration.\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/shadow-variables.png\" alt=\"\" \/><\/p>\n<h3 id=\"supports_square_brackets_in_type_parameters\">Supports Square Brackets in Type Parameters<\/h3>\n<p>We\u2019ve followed updates from the <a href=\"https:\/\/groups.google.com\/g\/golang-nuts\/c\/iAD0NBz3DYw?pli=1\" target=\"_blank\" rel=\"noopener\">design of generics<\/a> by the Go team and added support for   square brackets for the generics syntax instead of parentheses, as this was implemented in the previous proposal edition. Please note that the <em>Enable generics (experimental support for type parameters)<\/em> setting in<em> Preferences\/Settings | Go<\/em> is selected by default in the Beta build, but will be turned off in the 2020.3 release version. You\u2019ll need to explicitly select that checkbox to start using the feature.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/square-brackets-type-parameters-1.png\" alt=\"\" \/><\/p>\n<h3 id=\"other_improvements\">Other improvements <\/h3>\n<p>When you type <em>func<\/em> in the test file, GoLand by default suggests <code>bench<\/code> and <code>test<\/code> <em>Live Templates<\/em> in the completion options.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/bench-test-live-templates.png\" alt=\"\" \/><\/p>\n<p>When you type <em>for<\/em> inside the benchmark, the IDE suggests completing it with a for loop with <code>b.N<\/code>. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/for-loop-for-bench.png\" alt=\"\" \/><\/p>\n<h3 id=\"improved_spelling_and_grammar_checkers\">Improved spelling and grammar checkers<\/h3>\n<p>Suggestions now appear immediately in the dialog when you press <em>Alt+Enter<\/em>. In addition, a new version of the LanguageTool grammar checking engine features improved checks for English and adds support for 10 additional languages.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/grammar-checkers.gif\" alt=\"\" \/><\/p>\n<h2 id=\"code_with_me\"><strong>Code With Me<\/strong><\/h2>\n<p>GoLand 2020.3 supports <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/14896-code-with-me\" target=\"_blank\" rel=\"noopener\">Code With Me (EAP)<\/a> \u2013 a new service from JetBrains for collaborative development and pair programming. Code With Me enables you to share the project you currently have open in your IDE with others and work on it together in real time. Check out <a href=\"https:\/\/blog.jetbrains.com\/zh-hans\/tag\/codewithme\">these posts<\/a> to learn more about it. <\/p>\n<h2 id=\"ui_improvements\"><strong>UI improvements<\/strong><\/h2>\n<h3 id=\"reworked_welcome_screen\">Reworked Welcome screen<\/h3>\n<p>We\u2019ve reworked the Welcome screen to give you immediate access to:<\/p>\n<ul>\n<li>\nSearch for projects.\n<\/li>\n<li>\nSettings to customize your IDE.\n<\/li>\n<li>\nPlugins to expand the functionality of your IDE.\n<\/li>\n<li>\nTutorials to learn more about your IDE\u2019s features.\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/welcome-screen.png\" alt=\"\" \/><\/p>\n<h3 id=\"sync_ide_theme_with_your_os_preference\">Sync IDE theme with your OS preference <\/h3>\n<p>Select the Sync with OS option in <em>Settings\/Preferences | Appearance &amp; Behavior | Appearance | Theme<\/em> to automatically switch your IDE theme to match your OS preferences.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/sync-with-os.jpg\" alt=\"\" \/><\/p>\n<h3 id=\"drag_and_drop_tabs_anywhere_to_split_the_editor\">Drag and drop tabs anywhere to split the editor<\/h3>\n<p>Split the main editor screen horizontally or vertically by dragging a tab to the desired position and dropping it there. When you are dragging a tab, the editor will highlight where you can drop it.<\/p>\n<h3 id=\"project_view_updates\">Project view updates <\/h3>\n<p>We\u2019ve improved the UX when working with files from the Project view. Now when you open a file from the Project view, the focus is automatically placed on the editor to allow you to start working with your code right away. Press the spacebar and the IDE will show you a preview of the file in the <em>Project<\/em> view. <\/p>\n<p>If you want to have several files open in the editor simultaneously, you can now do so with one simple shortcut. Select the file in the <em>Project<\/em> view and press <em>Shift+Enter<\/em> to have the IDE split the Editor window and open the file in the right-hand part of it.<\/p>\n<h2 id=\"vcs_updates\"><strong>VCS updates<\/strong><\/h2>\n<h3 id=\"reworked_vcs_menu\">Reworked VCS menu<\/h3>\n<p>The VCS menu now adapts to version control system that you are currently using, making it easier to access key VCS features as they are no longer hidden in a submenu.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/default-vcs.png\" alt=\"\" \/><\/p>\n<h3 id=\"support_for_git_staging_area\">Support for Git staging area<\/h3>\n<p>There is an awesome new Git staging area available! Please note that this functionality is only available for the <a href=\"https:\/\/www.jetbrains.com\/help\/go\/go\/commit-and-push-changes.html#commit\" target=\"_blank\" rel=\"noopener\">Commit tool window<\/a>.<\/p>\n<p>Tick the <em>Enable staging area<\/em> checkbox in<em> Preferences\/Settings | Version Control | Git<\/em> to turn it on. Once you do, support for changelists will be disabled.<\/p>\n<p>In the commit UI, you will find staged and unstaged files. When you\u2019re ready to stage a file, simply click the <em>+<\/em> icon next to it. The file will appear under the <em>Staged<\/em> node. To add your changes to the staging area you can also use the gutter icon or <em>Show Diff<\/em>. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/stage-file-from-show-diff.gif\" alt=\"\" \/><\/p>\n<h3 id=\"improved_work_with_branches\">Improved work with branches<\/h3>\n<p>Work with branches has been improved: <\/p>\n<ul>\n<li>\nThe IDE now automatically corrects unaccepted symbols in the names of new branches, which helps you create branches in line with the accepted format.\n<\/li>\n<li>\nThe IDE will now show you all the actions available for the currently selected branch, just like it would for other branches.\n<\/li>\n<li>\nFor remote branches, we\u2019ve renamed the <em>Merge into Current<\/em> and <em>Rebase Current onto Selected<\/em> actions to <em>Pull into Current Using Merge<\/em> and <em>Pull into Current Using Rebase<\/em>.\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/branch-wrong-symbols-used-ws.gif\" alt=\"\" \/><\/p>\n<h2 id=\"more_features\"><strong>More features<\/strong><\/h2>\n<h3 id=\"plugins_enabled_per_project\">Plugins enabled per project <\/h3>\n<p>We\u2019ve added the ability to enable plugins for the current project or for all projects by selecting <em>Enable for Current Project<\/em> or <em>Enable for All Projects<\/em>. In <em>Settings | Preferences \/ Plugins<\/em>, press the gear icon on the plugin you want to enable or disable and select the desired option.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/plugins-update.png\" alt=\"\" \/><\/p>\n<h3 id=\"system_shortcut_keymap_for_macos\">System shortcut keymap for macOS <\/h3>\n<p><em>macOS system shortcut<\/em> keymap (<em>Preferences\/Settings | Keymap<\/em>) aims to provide you with an alternative macOS keymap that offers extended compatibility with system shortcuts and allows you to avoid using F-keys for essential actions. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/system-shortcut-keymap-for-mac.png\" alt=\"\" \/><\/p>\n<h3 id=\"profiler_flame_graph\">Profiler \u2013 Flame Graph<\/h3>\n<p>We\u2019ve improved the search mechanism of the Flame Graph in the Profiler and its visualization to let you find method metrics faster. You can click on the magnifying glass icon or type your search request inside the Flame Graph panel. <\/p>\n<p>Also, we\u2019ve added a search field, up\/down arrows for fast navigation between search results, and the ability to search either in the whole Flame Graph or just in a specific subtree.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/profiler-optimized.gif\" alt=\"\" \/><\/p>\n<h2 id=\"web_development_changes\"><strong>Web development changes<\/strong><\/h2>\n<h3 id=\"create_a_react_component_from_its_usage\">Create a React component from its usage<\/h3>\n<p>Courtesy of the WebStorm team, GoLand now has rich support for web development under the hood. One of the upcoming changes in this area is the ability to create a React component from an unresolved reference. Place the caret at an unresolved component, press Alt+Enter, and select the corresponding inspection.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/js-react.gif\" alt=\"\" \/><\/p>\n<h3 id=\"full_support_for_pnpm\">Full support for pnpm<\/h3>\n<p>GoLand provides full support for the <a href=\"https:\/\/pnpm.js.org\/\" target=\"_blank\" rel=\"noopener\">pnpm<\/a> package manager, along with npm and yarn. When you open a project with a pnpm-lock file and have pnpm installed on your machine, GoLand will automatically change the package manager for this project to pnpm. The IDE also has a dedicated pnpm option in the list of package managers under Preferences\/Settings | Languages and Frameworks | Node.js and NPM.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/pnpm-package-manager-in-preferences.png\" alt=\"\" \/><\/p>\n<h3 id=\"basic_support_for_multiple_webpack_configs\">Basic support for multiple webpack configs<\/h3>\n<p>GoLand 2020.3 will let you choose between detecting webpack configuration files manually or automatically. The new options can be found in <em>Preferences\/Settings | Languages &amp; Frameworks | JavaScript | Webpack<\/em>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/basic-support-for-multiple-webpack-configs.png\" alt=\"\" \/><\/p>\n<h2 id=\"work_with_databases\"><strong>Work with databases<\/strong><\/h2>\n<h3 id=\"couchbase_support\">Couchbase support<\/h3>\n<p>Thanks to our colleagues from the DataGrip team, GoLand has expanded its family of supported databases with a new member \u2013 Couchbase! Please note that the IDE supports the Couchbase Query service, not the Couchbase Analytics service.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/db-couchbase.png\" alt=\"\" \/><\/p>\n<h3 id=\"support_for_grants\">Support for grants<\/h3>\n<p>GoLand knows about object grants and displays them in an object\u2019s DDLs. This works for MySQL, PostgreSQL, Greenplum, Redshift, and SQL Server.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/grants.png\" alt=\"\" \/><\/p>\n<h3 id=\"separate_editor_for_cell_values\">Separate editor for cell values<\/h3>\n<p>We\u2019ve improved the separate editor for separate editor for cell values: <\/p>\n<ul>\n<li>\nIt now displays the formatted value even if the value is not formatted properly.\n<\/li>\n<li>\nIt\u2019s possible to edit the value in the formatted view and update it with the original formatting in one-line XMLs and JSONs.\n<\/li>\n<li>\nIf the width of the screen is crucial to your flow, you can move the cell value editor to the bottom of the data editor.\n<\/li>\n<li>\nThis panel can now also display images!\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/separate_editor_json.png\" alt=\"\" \/><\/p>\n<h3 id=\"import_export_for_databases\">Import\/export for databases<\/h3>\n<p>We\u2019ve added two new extractors to help make it easier for you to work with data:<\/p>\n<ul>\n<li>\n<em>One-Row<\/em> will help you copy a column to a comma-separated string.\n<\/li>\n<li>\n<em>SQL-Insert-Multirow<\/em> will generate a single INSERT statement with multiple new rows to be inserted.\n<\/li>\n<\/ul>\n<p>In addition, there is now a new option in CSV format configuration: never quote values.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/11\/new_extractors.gif\" alt=\"\" \/><\/p>\n<p>That\u2019s all for today! We always love hearing from you. Share your thoughts here in the comments, drop us a message <a href=\"https:\/\/twitter.com\/golandide\" target=\"_blank\" rel=\"noopener\">on Twitter <\/a>or report any issues you find to <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/GO\" target=\"_blank\" rel=\"noopener\">our bug-tracker<\/a>.<br \/>\nThe GoLand team<\/p>\n<p><em>The GoLand team<\/em><\/p>\n","protected":false},"author":754,"featured_media":95222,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,4221],"tags":[6245,91],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/go\/95218"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/go"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/go"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/754"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=95218"}],"version-history":[{"count":3,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/go\/95218\/revisions"}],"predecessor-version":[{"id":100378,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/go\/95218\/revisions\/100378"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/95222"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=95218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=95218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=95218"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=95218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}